2011-07-26 6 views
1

私はこれを持っている最初のアプリケーションを起動するときにC#.NETでフォームを表示しないために:このアプリケーションを正常に終了するにはどうすればよいですか?

[STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     SomethingForm frmSomething = new SomethingForm(); 

     Application.Run(); 
    } 

それは一つの形態のアプリケーションであり、SomethingFormが終了するButtonを持つ親フォームであります現在、次のものがApplication.ExitThread();と呼ばれています。このボタンは、アプリケーションを終了する唯一の方法です。

私はこれが優雅な終了ではないことを知っていますが、それはテスト時に動作させる唯一の方法でした。終了後にシステムトレイにアイコンを残すことで、いくつかの問題が発生しています。

どうすればこのアプリケーションを完璧に終了できますか?

答えて

3

フォームからThis.Close()を呼び出すだけです。それが唯一のフォームだと仮定すると、アプリケーションは正常に終了するはずです。

少し優雅なやり方は、Application.Exit()です。これの問題は、フォーム終了イベントが発生しないことです(.NET 1.1の後に修正されました)。

+0

+1。アクティブなフォアグラウンドスレッドが他に存在しない場合、終了します。 –

+0

フォーム終了に関するApplication.Exit()警告は、.NET 1.1にのみ適用されます。 –

+0

私は前にApplication.Exit()を試して覚えています。私のアプリケーションで今何をしているかにかかわらず、それは解決策です。ただし、this.Close()は機能しません - フォームは唯一のフォームです。 – Cheetah

2

または使用:任意の場所コードで

Application.Exit() 

または

System.Environment.Exit(-1); 
0

としては、すでにあなたがForm.Close()またはApplication.Shutdown()のいずれかが、答えました。 Application.Current.ShutdownModeShutdown.OnLastWindowCloseまたはShutdownMode.OnMainWindowCloseMSDN Application.ShutdownMode)に変更する必要があります。

また、通知領域に通知アイコンが残っている場合があることも説明しました。これは、NotifyIconコントロールのDispose()を呼び出してリソースを解放する可能性があります。

EDIT:私のアドバイスはWPFアプリケーションのためのものかもしれませんが、私はWinFormsを使用して以来、いつかされています。私はあなた(または他の誰か)がそれが有用であることを祈っています。

関連する問題