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 后台线程中使用定时器?