TouchCollection continues to register a touch after release

I’ve encountered an intermittent bug where Touch Collection continues to register a touch after it has been released, I’m fairly confident that this is not being caused by my code although I’ve included a condensed version below just in case. In the case of my game pressedLeft or pressedRight continue to be true even though you can see from the code this should not be able to happen.

Is there a way to completely clear the Touch Collection once in a while as this means that if the bug does occurs the user is unlikely to notice? I did try to use touches.Clear() but this seems to no longer work.

    protected override void Update(GameTime gameTime)
    {
        
        TouchCollection touches = TouchPanel.GetState();
                  

        switch (gameState)
        {
            case GameState.GamePlaying:
                if (level == 0) { Tutorial(touches); }
                else { GamePlaying(touches); }
                break;

        }
                    
        
        getGameTime = gameTime;
        base.Update(gameTime);
    }


void GamePlaying(TouchCollection touches)
    {
        pressedJump = false;
        pressedLeft = false;
        pressedRight = false;



        if (control == Controls.ButtonsRight || control == Controls.ButtonsLeft)
        {

            if (touches.Count > 0)
            {
                foreach (TouchLocation touch in touches)
                {
                    if (controlLeftRect.Contains((int)touch.Position.X, (int)touch.Position.Y))
                    {
                        pressedLeft = true;
                    }
                    if (controlRightRect.Contains((int)touch.Position.X, (int)touch.Position.Y))
                    {
                        pressedRight = true;
                    }
                    if (controlJumpRect.Contains((int)touch.Position.X, (int)touch.Position.Y))
                    {
                        pressedJump = true;
                    }
                    if (controlLeftRect.Contains((int)touch.Position.X, (int)touch.Position.Y) && (touch.State == TouchLocationState.Released))
                    {
                        pressedLeft = false;
                    }
                    if (controlRightRect.Contains((int)touch.Position.X, (int)touch.Position.Y) && (touch.State == TouchLocationState.Released))
                    {
                        pressedRight = false;
                    }

               }

            }
        }

I always monitor my touch event with the touch ID, I save the ID and check if it is already exist or not.

E:g: _LastTouchID = touches[i].ID;

Great idea, I’ll give it a go. Appreciate your help.