以下代码不会退出应用程序.如何退出应用程序并确保所有正在运行的线程都已关闭?

foreach (Form form in Application.OpenForms)
{
    form.Close();
}
Application.Exit();

推荐答案

您不会在代码中显示任何线程的使用,但假设代码中确实有线程.要关闭所有线程,您应该在启动它们之前将它们设置为后台线程,然后在应用程序退出时自动关闭它们,例如:

Thread myThread = new Thread(...);
myThread.IsBackground = true; // <-- Set your thread to background
myThread.Start(...);

微软的一篇"如何:停止多线程"文章:http://msdn.microsoft.com/en-us/library/aa457093.aspx

.net相关问答推荐

System.IO.Directory.Exists 在 LINQ 语句中失败,但在 foreach 循环中没有

问:在 Blazor WASM 应用程序中存储 api 密钥的最佳方式是什么?

如何正确使用“await using”语法?

如何从 HashSet 中检索实际项目?

如何在 ASP.NET Core 中使用 Bootstrap 4

如何在不违反继承安全规则的情况下在 .NET 4+ 中实现 ISerializable?

C# 事件是同步的吗?

为什么发布和调试模式下的代码行为不同?

如何在 C# 7 中返回多个值?

无法从使用 Visual Studio 2017 和 C# 7.0 的方法返回元组

IIS Express - 500.19 无法读取配置文件 - 因为它正在查看错误的路径

为什么 !0 是 Microsoft 中间语言 (MSIL) 中的一种类型?

为什么使用 ImmutableList 而不是 ReadOnlyCollection?

禁用 SSL 回退并仅将 TLS 用于 .NET 中的出站连接? (贵宾犬缓解)

为什么某些 C# lambda 表达式编译为静态方法?

使用给定的 DateTime 对象获取一个月的第一天和最后一天

我应该在方法结束时停止秒表吗?

NuGetPackageImportStamp 有什么用?

161803398 是一个“特殊”号码吗? Math.Random() 内部

如何防止任务的同步延续?