gpt4 book ai didi

c# - 关闭应用程序是否会停止所有事件的 BackgroundWorker?

转载 作者:可可西里 更新时间:2023-11-01 08:33:06 28 4
gpt4 key购买 nike

简单的问题,重复标题:

关闭 WinForms 应用程序是否会停止所有事件的 BackgroundWorker?

最佳答案

是的,确实如此。

BackgroundWorker.RunWorkerAsync 只是在内部委托(delegate)上调用 BeginInvoke,后者将请求排队到 ThreadPool。由于所有 ThreadPool 线程都是 background , 是的,它会在应用程序结束时结束。

但是,请记住:

  1. 通过“关闭 WinForms 应用程序”,我假设关闭了 main Form 实例(通常是传递给 Application.Run 在由 Visual Studio 自动生成的 Program 类中)。如果您有一个带有后台工作程序的子窗口,它不会自动停止其 BackgroundWorker

  2. 让后台线程在应用程序退出时中止是不是结束线程的推荐方式,因为您无法保证它将在何处中止。一个更好的方法是在关闭之前向 worker 发出信号,等待它优雅地完成,然后退出。

更多信息:Delegate.BeginInvoke , MSDN on Thread Pooling , Thread.IsBackground

关于c# - 关闭应用程序是否会停止所有事件的 BackgroundWorker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1687677/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com