C#에서 IsBackground 속성을 true로 설정 한 스레드를 사용하고 있습니다. 스레드는 응용 프로그램이 닫힐 때까지 루프에서 일부 코드를 실행 중입니다. 응용 프로그램이 닫히면 스레드가 실행을 멈 춥니 다 (IsBackground = true로 설정했기 때문에).응용 프로그램이 닫힐 때 백그라운드 스레드가 응용 프로그램에 의해 종료 될 때를 감지 할 수 있습니까?
어떻게 응용 프로그램이 스레드를 죽입니까? ThreadAbortException을 얻지 못하기 때문에 중단을 호출하여 처리하지 않는 것 같습니다. 그 장면 뒤에서 일어날까요? 루프의 마지막 블록에서 롤백을하고 싶습니다.
스레드에서 직접 중단을 호출 할 수 있지만 응용 프로그램이 백그라운드 스레드를 닫는 방법과 스레드 내부에서 반응 할 수 있는지 알고 싶습니다. Application.ApplicationExit 이벤트를 구독 할 수 있지만이 코드는 서비스 및 winform에서 실행 중이므로 finally 문에서 롤백 할 수 있도록 루프 내부에서 예외를 catch하는 것이 좋습니다.
전경 스레드로 만들고 스레드를 수동으로 닫는 '전역'응용 프로그램 종료 시나리오를 만들 수 있습니다. – CodingBarfield
[AppDomain.ProcessExit] (http://msdn.microsoft.com/en-us/library/system.appdomain.processexit.aspx) 이벤트를 보셨습니까? – Botz3000
그래서 당신은 그 장면의 뒤에서 일어난다 고 말하고 있습니다. 나는 이런 종류의 맞춤 솔루션을 만드는 것 이외에는 그것에 반응 할 수 없습니다. –