문제

Windows Forms 응용 프로그램을 개발하기 위해 VSTS 2008 + .NET 3.5 + C#을 사용하고 있습니다. 내 혼란은 Application.exit 응용 프로그램이 종료되도록 강요하지 않는 것 같습니다. 그렇지 않은 경우 응용 프로그램을 종료하려면 어떤 방법을 호출해야합니까?

편집 1 :

일반적으로 주요 방법은 이와 같습니다. 환경을 호출하지 않고 메인 기능을 우아하게 종료하는 방법?

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        try
        {
            Application.Run(new Form1());
        }
        catch (Exception ex)
        {
            Console.WriteLine (ex.Message);
        }
    }

미리 감사드립니다, 조지

도움이 되었습니까?

해결책

Application.Exit 실제로 메시지 루프를 매우 부드럽게 묻습니다.

앱이 종료되기를 원한다면 가장 좋은 방법은 Main, 추가 비 팩 그라운드 스레드를 깨끗하게 닫습니다.

잔인하고 싶다면 ... Environment.Exit 또는 Environment.FailFast? 노트 이것은 가혹합니다 - 자신의 것을 죽이는 것과 거의 같습니다. Process.

다른 팁

다음을 시도하십시오.

Process.GetCurrentProcess().Kill();

Environment.Exit Winforms와 함께 작동하지 않습니다 Environment.FailFast 자체 예외를 던집니다.

전화 할 때 신청서가 우아하게 빠져 나오지 않는 경우 Application.Exit (분명히) 그렇게하지 못하게하는 것이 있습니다. 이것은 양식 설정에서 나올 수 있습니다 e.Cancel = true 에서 FormClosing 이벤트, 여전히 실행중인 배경 스레드가 아닌 스레드. 나는 당신의 프로세스를 유지하는 것이 무엇인지 정확하게 연구하고 좋은 방식으로 그것을 닫는 것을 신중하게 연구하도록 조언합니다. 그것은 당신의 응용 프로그램도 멋지게 가깝게 만들어야합니다.

일반적으로 WinForms 응용 프로그램에서는 기본 양식을 닫기에 충분해야합니다.

나는 사용한다

if (System.Windows.Forms.Application.MessageLoop)
{
   // Use this since we are a WinForms app
   System.Windows.Forms.Application.Exit();
}
else
{
   // Use this since we are a console app
   System.Environment.Exit(1);
}

~에서 http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx

프로그램 내에서 새 양식/창을 여는 것을 발견했을 때도 같은 문제가 있었고, 두 번째 양식 (닫지 않음) 만 숨기면 기본 양식이 application.exit ()를 통해 올바르게 종료하는 것을 방지 할 수 있습니다.

이 경우 두 가지 솔루션이 있습니다. 먼저 Application.exit () 대신 기본 양식에서 Close ()를 사용하는 것입니다. 두 번째 솔루션은 다음 코드를 사용하는 것입니다.

if (secondForm != null && !secondForm.IsDisposed) secondForm.Dispose();

나는 단순히 당신이해야 할 일이 Application.exit을 수행하는 것 뿐이며, 당신이해야 할 일은 단순히 끝에 넣는 것입니다.

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