Исключение при остановке запущенного потока в c # - PullRequest
0 голосов
/ 04 октября 2018

В моем приложении есть поток с именем «FirstThread», который работает в фоновом режиме.При попытке остановить этот запущенный поток с помощью «FirstThread.Abort ()» он возвращает исключение. Можете ли вы предложить какие-либо решения для этого

 if (FirstThread.ThreadState == System.Threading.ThreadState.Running)
     FirstThread.Abort();

enter image description here

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Обычно, чтобы избежать этих исключений, я использую флаги.Вы можете создать флаг с именем stopFirstThread и вместо прерывания потока вы устанавливаете значение флага на True, и внутри первого потока продолжайте проверять этот флаг, когда он становится True, вы можете мирно завершить поток.

0 голосов
/ 04 октября 2018

Прерывание потока - плохая идея и плохая практика, потому что это может привести ко многим ошибкам.Вместо этого убедитесь, что вам нужен поток, и точно определите операции, которые он должен выполнять, без чего-либо еще.Также вы можете реализовать Thread Worker, который манипулирует вашими потоками.

Если вы все еще не уверены, что Thread.Abort() - плохая идея, вы можете инкапсулировать исключение в блоке try-catch:

try {
     Thread.Abort();
}
catch { //DO NOTHING }

, но я не рекомендую это.

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