backgroundworker的使用问题
2024-10-09 17:17:55
这几天做项目懒了就用backgroundworker这个控件,觉得它比多线程方便一些,然后这个线程里面在开线程,然后惨剧就发生了:当我打开一个主窗口后,在打开一个子窗口,子窗口里有个backgroundworker,然后我就启动了这个dowork,然后就开始执行很耗时的操作,闲着无聊,我点了几下鼠标,一不小心把子窗口给关了,靠,执行了一半的程序,重启吧,可是还没等我重新打开,奇迹出现了,程序执行完了,这说明我关闭了窗口,但是backgroundworker还在运行,嗯?这可不行啊,我这么严谨的人怎么能出这样的错呢,虽然客户是不会乱点的,好吧,让我们看看怎么办-----
正题
经过我测试到现在得出结论
backgroundworker 在你关闭窗体时他不会结束,什么时候结束?是在你的整个application结束,它才结束
this.backgroundWorker1.CancelAsync()这个方法,我觉得很奇怪,它到底该怎么用?
看msdn 调用 CancelAsync 时,辅助方法可以停止其执行并退出。辅助代码应定期检查 CancellationPending 属性,查看是否已将该属性设置为 true。
这是个什么意思呢?我理解了是不是说调用这个方法时我得先看看CancellationPending是不是true呢,不然就会取消失败?那这个取消还有个毛用啊,CancellationPending又不是我能控制的,那我想随时随地的关掉这个不就无法实现了吗?那不就等于说这个CancelAsync是无效的吗?
最后我试了n久还是无法使用ancelAsync这个方法来取消backgroundworker
大神能给解释吗?
最新文章
- 【JQuery】jQuery.inArray 确定第一个参数在数组中的位置
- asp.net 163邮件发送
- 15分钟弄懂 const 和 #define
- Qt 'void QWidget::show()' is inaccessible
- 翻纸牌游戏(dfs回溯)
- UVa 10299 - Relatives
- tbl.js div实现的表格控件,完全免费,不依赖jquery
- QT5 Thread线程
- css 块状元素与行内元素(内联元素)的理解
- 抽奖大转盘 js代码
- Docker Compose 简介
- centos7防火墙导致不能访问的
- sklearn交叉验证-【老鱼学sklearn】
- sql判断日期是否为当前季度
- react portals
- python第五天 字典
- Android控件Gridview实现多个menu模块,可添加可删除
- 无法解决 equal to 运算中 ";Chinese_PRC_CI_AS"; 和 ";Latin1_General_100_CI_AS"; 之间的排序规则冲突。
- PHP与Imagemagick
- vue2.0修饰符sync用法