У меня есть 2 потока в моей программе. 1 обрабатывает графический интерфейс, а другой выполняет некоторую автоматизацию слов. Позволяет называть их GUIThread и WorkerThread.проверить, завершил ли поток свой метод до того, как «убил» его C#
WorkerThread выполняет цикл с использованием рекурсии. WorkerThread работает только при автоматизации слова и пользователь должен иметь возможность остановить автоматизацию слова. Поэтому я применил кнопку «Стоп» в графическом интерфейсе, которая просто убивает/завершает WorkerThread. Однако, если я убью WorkerThread, пока он находится в середине метода, он иногда вызывает проблему в моем документе с текстом (это более длинная история), и именно поэтому я хочу проверить, закончил ли WorkerThread/вернулся из метода, прежде чем я убью Это.
Это то, что мой код делает, когда я нажал на кнопку «Стоп»:
//Stops the worker thread = stops word automation in process
workerThread.Abort();
//This blocks the thread until the workerThread has aborted
while (workerThread.IsAlive) ;
Мое собственное предложение/обходной путь для этой проблемы было иметь глобальную переменную я мог установить каждый раз, когда WorkerThread вошел и левый метод, но это не кажется мне правильным. Я имею в виду, я думаю, что должен быть более простой способ справиться с этим.
http://msdn.microsoft.com/en-us/library/dd997364(v=vs.110).aspx --- Отмена в управляемых потоках – zerkms
Как предлагалось Zerkms, вы должны использовать маркер отмены – Younes