Я думаю, что весь доступ к элементам управления пользовательского интерфейса должен быть сделан из потока пользовательского интерфейса. Изменение элемента управления из потока, которому не принадлежит базовый дескриптор, может иметь нежелательные последствия. В лучшем случае будет сгенерировано исключение, в худшем случае все может показаться правильным, пока не произойдет какое-либо состояние гонки (и вы можете потратить много времени, пытаясь его воспроизвести).
Используйте Invoke метод, передавая ваш делегат, который будет выполнен в потоке пользовательского интерфейса.