Вы не можете получить доступ к элементу управления пользовательского интерфейса в потоке, отличном от потока пользовательского интерфейса, ответственного за этот элемент управления.
См. Страницу WinForms в моем руководстве по созданию потоков, а также поиск учебных пособий по BackgroundWorker
, компоненту, представленному в .NET 2.0, который значительно облегчает жизнь (особенно для индикаторов выполнения).
Кроме того, я бы старался избегать использования Thread.Suspend
/ Resume
, предпочитая более кооперативный подход (например, с Monitor.Wait
/ Pulse
). Это позволяет избежать приостановки потока, пока он удерживает блокировку и т. Д.