2012-05-05 185 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)一起使用的第一点应该足够了。 祝你好运!