如何及时取消 BackgroundWorker 组件的后台工作

蓝咒 提交于 2019-11-28 23:27:15

BackgroundWorker 提供的CancelAsync只是更改了属性值,实际上并未做任何的取消操作。当处理一个比较耗时的单个任务时,需要立即关闭后台线程,可采用如下做法。(注:BackgroundWorker 也不提供他当前工作线程的属性,其理由是它是随机从线程池中获取的线程,所以它也不清楚自己用的是哪个线程,这真的是个理由吗?)

定义线程变量workThread,并在doWrok方法中将当前的线程赋值给它。

 

Code

 

当需要终止该后台工作时,直接中断现场即可。

 

Code

 

注意:中断线程之后的BackgroundWorker 不可再使用,需要重新的初始化。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!