backgroundworker的使用问题
这几天做项目懒了就用backgroundworker这个控件,觉得它比多线程方便一些,然后这个线程里面在开线程,然后惨剧就发生了:当我打开一个主窗口后,在打开一个子窗口,子窗口里有个backgroundworker,然后我就启动了这个dowork,然后就开始执行很耗时的操作,闲着无聊,我点了几下鼠标,一不小心把子窗口给关了,靠,执行了一半的程序,重启吧,可是还没等我重新打开,奇迹出现了,程序执行完了,这说明我关闭了窗口,但是backgroundworker还在运行,嗯?这可不行啊,我这么严谨的人怎么能出这样的错呢,虽然客户是不会乱点的,好吧,让我们看看怎么办-----
正题
经过我测试到现在得出结论
backgroundworker 在你关闭窗体时他不会结束,什么时候结束?是在你的整个application结束,它才结束
this.backgroundWorker1.CancelAsync()这个方法,我觉得很奇怪,它到底该怎么用?
看msdn 调用 CancelAsync 时,辅助方法可以停止其执行并退出。辅助代码应定期检查 CancellationPending 属性,查看是否已将该属性设置为 true。
这是个什么意思呢?我理解了是不是说调用这个方法时我得先看看CancellationPending是不是true呢,不然就会取消失败?那这个取消还有个毛用啊,CancellationPending又不是我能控制的,那我想随时随地的关掉这个不就无法实现了吗?那不就等于说这个CancelAsync是无效的吗?
最后我试了n久还是无法使用ancelAsync这个方法来取消backgroundworker
大神能给解释吗?
backgroundworker的使用问题的更多相关文章
- C# BackgroundWorker 详解
在C#程序中,经常会有一些耗时较长的CPU密集型运算,如果直接在 UI 线程执行这样的运算就会出现UI不响应的问题.解决这类问题的主要途径是使用多线程,启动一个后台线程,把运算操作放在这个后台线程中完 ...
- 【Winform】使用BackgroundWorker控制进度条显示进度
许多开发者看见一些软件有进度条显示进度,自己想弄,项目建好后发现并没有自己想象中的那么简单...看了网上很多教程后,写了一个小Demo供网友们参考~~,Demo的网址:http://pan.baidu ...
- C# 多線程&BackgroundWorker概念入門教程
感謝以下各位作者的貢獻~ 百度經驗舉了個例子,很好理解BackgroundWorker的用途(主要是用來啟動後台線程,而不阻塞調用程式的運行),收藏一下 http://jingyan.baidu.c ...
- 【C#】【Thread】BackgroundWorker的使用
BackgroundWorker 可以用于启动后台线程. 主要的事件及参数: 1.DoWork --当执行BackgroundWorker.RunWorkerAsync方法时会触发该事件,并且传递Do ...
- 用于异步的BackgroundWorker
XAML代码: <Window x:Class="backgroundtest.MainWindow" xmlns="http://schemas.microsof ...
- C# 使用BackgroundWorker例子及注意点
该例子为使用BackgroundWorker在TextBox文本中产生一个10000以内并且能被5整除的数(1秒产生一个) 操作界面可以启动线程,也可以停止线程,界面设计如图: 先贴代码,有注释的地方 ...
- C# BackgroundWorker组件学习入门介绍
C# BackgroundWorker组件学习入门介绍 一个程序中需要进行大量的运算,并且需要在运算过程中支持用户一定的交互,为了获得更好的用户体验,使用BackgroundWorker来完成这一功能 ...
- winform异步系统升级—BackgroundWorker
BackgroundWorker用法实例 自己的代码,就是要执行的代码写到dowork里,ProgressChanged事件是控制进度时用的,最后的Completed事件进度完成,也就是dowork里 ...
- BackgroundWorker组件的作用
当构建一个图形化的Windows Form桌面应用程序并且需要执行在应用程序主UI线程之外的线程中长时间的任务时,BackgroundWorker类就很有用了. 要使用BackgroundWorker ...
- C# BackgroundWorker的使用
文章摘自:http://www.cnblogs.com/tom-tong/archive/2012/02/22/2363965.html BackgroundWorker 可以用于启动后台线程. 主要 ...
随机推荐
- minicom/kermit捕捉日志
1.minicom捕捉日志 ctrl-A Z 命令窗口中有 Capture on/off......L 2.kermit捕捉日志 ctrl-\ C进入kermit命令行模式 log session ...
- 移植u-boot.2012.04.01
/*************************************************** *u-boot版本:u-boot2012.04.01 *gcc版本:arm-linux-gcc ...
- CentOS学习笔记--基本命令--文件与目录管理
Linux基本命令--文件与目录管理 本节节选自鸟哥的 Linux 私房菜 -- 基础学习篇目录 第七章.Linux 文件与目录管理 ls(文件与目录的检视) ls命令就是list的缩写,ls可以 ...
- 整合jQuery和Prototype遇到的问题.
由于项目要在旧的服务器上面运行,而旧的服务器底层用了Prototype,所以需要解决jQuery和Prototype冲突的问题. 一.$符号冲突问题 这个还是很好解决的. jQuery.noConfl ...
- 登陆peoplesoft的时候显示信息
Signon Event Message Select selectPeopleTools, then selectUtilities, then selectAdministration, then ...
- jQuery类级别插件--返回顶部,底部,去到任何部位
先引入js:<script type="text/javascript" src="jquery.js" ></script><s ...
- jQuery 遍历each()的使用方法
.each()是一个for循环的包装迭代器.each()通过回调的方式处理,并且会有2个固定的实参,索引与元素(从0开始计数).each()回调方法中的this指向当前迭代的dom元素 遍历方法: & ...
- php spl
最近在重构后台,自写rbac,发现自己在设计模式方面尤为欠缺,没有一个长远的目光,所以打算静下心来看一看自己平时不关注的功能,spl就是其中之一. spl是Standard PHP Library(P ...
- debian完整部署 Nginx + uWSGI + Django
手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供 ...
- bootstrap-table-master
http://bootstrap-table.wenzhixin.net.cn/getting-started/ 1.安装bower 2. 3.编译css and js 以上就编译完了boostrap ...