내 프로그램에 스레드가 2 개 있습니다. 1은 GUI를 처리하고 다른 하나는 일부 단어 자동화를 수행합니다. GUIThread 및 WorkerThread를 호출 할 수 있습니다.스레드가 "죽이기"전에 메서드를 완료했는지 확인하십시오. C#
WorkerThread는 재귀를 사용하는 방법을 반복합니다. WorkerThread는 자동화라는 단어를 수행하는 동안 만 작동하며 사용자는 단어 자동화를 중지 할 수 있어야합니다. 따라서 GUI에서 "WorkerThread를 죽이거나 종료하는"Stop 버튼을 구현했습니다. 그러나 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