【问题标题】:Application doesn't terminate应用程序不会终止
【发布时间】:2012-05-05 16:46:28
【问题描述】:

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

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

其实好像程序关闭了,但是任务管理器的进程列表显示不是。

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

【问题讨论】:

  • 在表单关闭事件中强制终止进程。
  • 试试 Application.Exit();在窗体关闭事件
  • I/O 操作的代码是什么样的?
  • 我会用 DoEvents 给你钱。

标签: c# .net winforms


【解决方案1】:

我向您推荐以下内容:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        【解决方案4】:

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

        尝试这样做:

        Thread somethread = new Thread(...);
        someThread.IsBackground = true;
        someThread.Start(...); 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-05-20
          • 2017-12-15
          • 1970-01-01
          • 1970-01-01
          • 2013-12-27
          • 2017-04-06
          • 1970-01-01
          相关资源
          最近更新 更多