как присоединиться к теме, работающей с другой - PullRequest
0 голосов
/ 02 июня 2010

У меня есть поток изменений в элементе управления в форме в приложении Windows Forms,

Я реализую метод invoke для предотвращения многопоточности перекрестного доступа,

но когда я закрываю форму, второй поток все еще работает и пытается получить доступ к элементу управления и выбрасывает ссылку на объект, не установленную на экземпляр исключения объекта

как я могу обеспечить предотвращение работы второго потока, если первый не существует

без ручной проверки рекомендуется

заранее спасибо

1 Ответ

0 голосов
/ 02 июня 2010

Перед закрытием формы вы можете уведомить ветку о том, что она собирается быть отмененной. Например, если вы используете BackgroundWorker для своего потока, вы можете вызвать метод CancelAsync .

Обновление

Для поддержки этого при использовании класса Thread вы можете либо вызвать Abort (что не рекомендуется), либо вы можете использовать общую переменную. По сути, вы можете иметь логическое значение isCancelled, которое поток периодически проверяет - и, если оно ложно, поток возвращает. Затем вы можете установить это логическое значение из потока пользовательского интерфейса, чтобы дать сигнал фоновому потоку остановиться. Вам также необходимо убедиться, что вы правильно lock логическое значение, прежде чем получить к нему доступ из любого потока.

Есть и другие методы, которые вы можете использовать - если вы опубликуете свой код темы, мы можем помочь вам в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...