回答
是的,它的确如此。
BackgroundWorker.RunWorkerAsync
只需在内部代理上调用BeginInvoke
,该内部代理又将请求排入ThreadPool
。由于所有的ThreadPool
线程都是background,是的,它将在应用程序结束时结束。
但是,请记住:
通过“关闭WinForms应用程序”我假设关闭主要
Form
实例(这是一般人在Program
类传递给Application.Run
通过视觉自动生成工作室)。如果您有带后台工作人员的子窗口,则不会自动停止BackgroundWorker
。让应用程序退出时中止后台线程是而不是推荐的方式来结束线程,因为您没有保证它会中止的地方。更好的方法是在关闭之前发信号给工作人员,等待它正常完成,然后退出。
更多信息:Delegate.BeginInvoke,MSDN on Thread Pooling,Thread.IsBackground
如果应用程序完全关闭(因为没有任何事情阻止它关闭),您的后台工作人员也将消失。
我想是的。由于线程与进程关联,并且进程关闭,所有线程都必须结束。
BackgroundWorker的线程是后台线程(线程ThreadPool),which die when the application dies。
在主(UI)线程停止后线程可以继续执行的唯一方法是通过创建新的Thread实例并将IsBackground设置为false来明确创建线程。如果你不这样做(或者如果你使用后台线程产生的ThreadPool,或者BackgroundWorker在内部使用ThreadPool),你的线程将成为后台线程,当主线程结束时会终止。
首先,只是为了让这个答案很简单:
当一个进程已经关闭,其全部线程已终止。这是毫无疑问的。
的问题,因为我解释它,于是就变成了:
还会运行
BackgroundWorker
情况下,防止在应用程序关闭?
对的回答问题是:不,他们不会。
是的,它会的。我写了这个简单的表单,并关闭表单退出应用程序:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
Thread.Sleep(100);
}
}
}
- 1. 停止Android应用程序的所有活动和片段
- 2. 如何关闭我的应用程序的所有活动?
- 3. GC是否停止.NET中的所有应用程序线程?
- 4. 停止关闭Android应用程序
- 5. 如何关闭所有活动并退出应用程序
- 6. 关闭EAGLView并停止所有进程
- 7. 如何防止iPhone应用程序关闭,直到完成所有活动
- 8. 退出应用程序时是否应关闭所有资源?
- 9. Install4j - 应用程序在关闭时不会停止MacOS X
- 10. 当我关闭应用程序时,AsyncTask会停止吗?
- 11. 应用程序关闭时SqlConnection是否自动关闭?
- 12. 石英调度程序关闭(true)是否等待从运行的作业启动的所有线程停止?
- 13. 服务在关闭应用程序时自动停止
- 14. 关闭当前应用程序并启动Play商店的所有活动
- 15. Android应用程序在关闭主要活动时不会关闭
- 16. DriverManager.deregisterDriver(驱动程序)是否关闭所有连接?
- 17. 防止Android应用程序被关闭/停止
- 18. 断点是否停止所有线程?
- 19. Visual Studio断点,它是否会停止整个应用程序?
- 20. 在关闭android应用程序时停止线程?
- 21. 在关闭应用程序时:如何停止线程?
- 22. 如何退出应用程序,关闭所有活动并显示主屏幕?
- 23. 如何停止Java应用程序的关闭
- 24. 如何在应用程序关闭时停止MediaPlayer的声音?
- 25. 停止互联网活动当应用程序终止
- 26. 当应用程序处于后台时终止所有活动
- 27. 使所有应用程序振动停止设置
- 28. 关闭应用程序后,它会自动启动第二项活动?
- 29. core.async是否会阻止自己停止,或者是否有'调度程序'?
- 30. 停止UIPopover自动关闭
这是一种圆形的答案。如果后台工作人员在应用程序关闭时没有自动停止,他们将阻止应用程序关闭。 – 2009-11-06 13:46:59