0

我的问题是,当我使用标题栏上的关闭框关闭表单时,应用程序不会终止。

当我正在进行一些 I/O 操作时,我想退出应用程序而不执行 I/O 操作。

实际上,似乎程序已关闭,但任务管理器的进程列表显示并非如此。

如何强制取消 I/O 操作?

4

4 回答 4

2

我向您推荐以下内容:

  1. 将 I/O 操作更改为异步模式(使用 BeginXXX、EndXXX),停止它们会更容易!
  2. 使用同步事件停止所有线程。
  3. 跟踪所有线程并调用 Kill 方法。

与其他点(2 或 3)一起使用的第一个点应该足够了。祝你好运!

于 2012-05-06T16:52:21.830 回答
1

关闭表单只会使表单不可见。但是,如果有任何进程在主线程或其他线程中运行,则应用程序不会终止。您必须确保所有资源都已关闭或处置。

于 2012-05-05T16:50:03.217 回答
1

您如何尝试关闭您的应用程序?

Application.Exit 只是要求通过消息循环关闭。它可能不会发生。

最好的方法是关闭您可能正在执行的所有非后台线程。不这样做将使您的流程保持运行。

您也可以尝试 Environment.Exit 或 Environment.FailFast。这就像杀死你的进程。

于 2012-05-05T16:51:04.313 回答
1

如果您的应用程序中运行了任何无限循环,请在启动它们之前让您的线程在后台线程中运行,那么它们将在应用程序退出时自动关闭。

尝试这样做:

Thread somethread = new Thread(...);
someThread.IsBackground = true;
someThread.Start(...); 
于 2012-05-05T17:03:03.907 回答