C# form发起backgroundworker 当form close时 backgroundworker 还会继续工作吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# form发起backgroundworker 当form close时 backgroundworker 还会继续工作吗相关的知识,希望对你有一定的参考价值。

C# form发起backgroundworker 当form close时 backgroundworker 还会继续工作吗

这分两种情况,如果是主窗体退出的话backgroundworker也会退出,如果backgroundworker是在子窗体中的话,关闭子窗体,backgroundworker还会继续工作。追问

这不是主窗体,Form关闭时采用的是this.Close方法,backgroundworker正在跑后台数据库的一个存储过程,退出界面时,这个存储过程是否会继续执行,事务是如何控制的?

追答

会继续执行,这个线程是独立于窗体的。另外,在线程中不要有操作窗体的代码,因为这个时候窗体已经销毁了,如果在RunWorkerCompleted也有操作窗体的代码的话也要做相应的处理。

追问

目前的情况是,RunWorkerCompleted有操作窗体的代码,这个时候再去操作不存在的窗体,程序会抛出异常?

追答

不一定会抛出异常,我在测试的时候就没有,在我看到的资料中说可能会出现无法预料的情况,所以还是加上一个判断比较好。

if(!this.IsDisposed)
//操作窗口的代码。

参考技术A 不会了,这个是多线程异步操作,窗体关闭时,线程终止 参考技术B 其实这个东西的原理就是多线程异步操作,窗体关闭时,由该窗体生成的所有资源包括各种线程都会关闭和回收

以上是关于C# form发起backgroundworker 当form close时 backgroundworker 还会继续工作吗的主要内容,如果未能解决你的问题,请参考以下文章

C#应用BackgroundWorker组件实现异步功能

(转)C# 使用BackgroundWorker

C#如何在BackgroundWorker 后台线程中使用定时器?

C# BackGroundWorker实现窗体不卡死 进度条功能

C# BackgroundWorker 的文化

c# BackgroundImage的问题