C# 应用程序没有';不要终止

C# 应用程序没有';不要终止,c#,.net,winforms,C#,.net,Winforms,我的问题是,当我使用标题栏上的“关闭”框关闭表单时,应用程序不会终止 当我处于某个I/O操作的中间时,我想退出应用程序而不执行I/O操作。 实际上,该程序似乎已关闭,但任务管理器的进程列表显示并非如此 如何强制取消i/O操作?关闭窗体只会使窗体不可见。但是,如果在主线程或其他线程中运行任何进程,应用程序将不会终止。您必须确保所有资源都已关闭或释放。关闭表单只会使表单不可见。但是,如果在主线程或其他线程中运行任何进程,应用程序将不会终止。您必须确保所有资源都已关闭或释放。您如何尝试关闭应用程序 退

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

当我处于某个I/O操作的中间时,我想退出应用程序而不执行I/O操作。

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


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

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

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

您如何尝试关闭应用程序

退出只是通过一个消息循环请求关闭。这可能不会发生

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


您也可以尝试Environment.Exit或Environment.FailFast。这就像终止进程。

您如何尝试关闭应用程序

退出只是通过一个消息循环请求关闭。这可能不会发生

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


您也可以尝试Environment.Exit或Environment.FailFast。这就像终止您的进程。

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

试着这样做:

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

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

试着这样做:

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

我向你推荐如下:

  • 将I/O操作更改为异步模式(使用BeginXXX、EndXXX),将更容易停止它们
  • 使用同步事件停止所有线程
  • 跟踪所有线程并调用Kill方法
  • 第一个点与另一个点(2或3)一起使用就足够了。
    祝你好运

    我向您推荐以下内容:

  • 将I/O操作更改为异步模式(使用BeginXXX、EndXXX),将更容易停止它们
  • 使用同步事件停止所有线程
  • 跟踪所有线程并调用Kill方法
  • 第一个点与另一个点(2或3)一起使用就足够了。
    祝你好运

    通过强制,您可以在形式closing event.try Application.Exit()中终止进程;在form Closed event上,I/O操作的代码是什么样子的?我将使用DoEvents对您施加压力。通过强制,您可以在form Closed event中终止进程。请尝试应用程序。退出();在form Closed Event上,I/O操作的代码是什么样子的?我将使用DoEvents对您进行说明。