2012-05-05 240 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/O操作(使用的BeginXXX,EndXXX)異步模式,這將是更容易阻止他們!
  2. 使用同步事件來停止所有線程。
  3. 跟蹤所有線程,並調用Kill方法。

與其他人(2或3)一起使用的第一點應該足夠了。 祝你好運!