2012-05-05 6 views
0

내 문제는 캡션 표시 줄의 닫기 상자를 사용하여 양식을 닫을 때 응용 프로그램이 종료되지 않습니다.응용 프로그램이 종료되지 않습니다.

I/O 작업이 중간에있을 때 I/O 작업을 수행하지 않고 응용 프로그램을 종료하려고합니다.

실제로 프로그램이 닫혀 있지만 작업 관리자의 프로세스 목록에없는 것처럼 보입니다.

강제로 I/O 작업을 취소 할 수 있습니까?

+0

강제로 양식 닫기 이벤트에서 프로세스를 종료 할 수 있습니다. –

+0

시도하십시오 Application.Exit(); 양식 닫힘 이벤트 – Prashant

+0

I/O 작업 코드가 어떻게 생깁니 까? –

답변

1

양식을 닫으면 양식이 보이지 않습니다. 그러나 주 스레드 나 다른 스레드에서 실행중인 프로세스가 있으면 응용 프로그램이 종료되지 않습니다. 모든 리소스를 폐쇄하거나 폐기해야합니다.

1

신청서를 어떻게 닫으려고합니까?

Application.Exit은 메시지 루프를 통해 종료하도록 요청합니다. 그것은 일어나지 않을 수도 있습니다.

가장 좋은 방법은 실행중인 비 백그라운드 스레드를 닫는 것입니다. 그렇게하지 않으면 프로세스가 계속 실행됩니다.

Environment.Exit 또는 Environment.FailFast를 시도해 볼 수도 있습니다. 이것은 당신의 과정을 죽이는 것과 같습니다.

1

앱에서 무한 루프가 실행중인 경우 스레드를 시작하기 전에 백그라운드 스레드에서 실행하게하고 응용 프로그램이 종료되면 자동으로 닫힙니다.

시도가 이런 식으로 할 : 나는 당신에게 추천

Thread somethread = new Thread(...); 
someThread.IsBackground = true; 
someThread.Start(...); 
2

을 다음

  1. 변경 I/(BeginXXX, EndXXX 사용) 비동기 모드로 O 작업, 그것은 것입니다 쉽게 그들을 막을!
  2. 모든 스레드를 중지하려면 동기화 이벤트를 사용하십시오.
  3. 모든 스레드를 추적하고 Kill 메서드를 호출하십시오.

첫 번째 점은 다른 점 (2 또는 3) 중 하나와 함께 사용하면 충분합니다. 행운을 빈다!

관련 문제