문제

응용 프로그램을 닫아야하는 조건이있어서 certian 플래그를 설정할 때 this.dispose ()라고 부릅니다.

처음에 나는 이것을 호출 한 후 함수를 호출하는 데 문제가 있다고 생각했고, 그래서 나는 코드를 마지막으로 불리는 것으로 옮겼지만 여전히 "ArgumentException은 처리되지 않았다" "매개 변수는 유효하지 않다". application.run (new myapp (); line에서.

내가 뭘 잘못하고 있죠? 길을 따라 뭔가를 놓쳤습니까? 아니면 응용 프로그램을 닫는 더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

사용해보십시오 Application.Exit() 신청서를 종료합니다.

당신이 사용할 때 Application.Run(new MyForm());, 메시지 루프는 형태 객체를 기본 양식으로 사용하여 스레드에서 생성됩니다. 응용 프로그램에 오는 Win32 메시지를 해당 객체에 전달하려고합니다. 그러나 전화 할 때 Dispose() 양식 개체에서는 아직 메시지 루프를 종료하지 않았습니다. 양식 객체에 다음 메시지를 전달하려고 할 때 이미 배치되어 예외를 던지기 때문에 실패합니다. 양식이 닫히도록 요청해야합니다 (전화로 Close 양식)에서, 이벤트를 처리하도록 양식을 요청하고 완료된 경우 메시지 루프를 종료합니다. 다른 방법 (더 직접적인 방법)은 Application.Exit() 모든 관련 양식이 닫히게됩니다.

다른 팁

주 양식을 닫으려면 this.dispose () 대신 this.close ()를 사용해야합니다.

앱을 닫고 AppDomain을 언로드하는 경우 AppDomain의 모든 것이 메모리에서 제거되므로 Dispose () 호출 할 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top