社区
C#
帖子详情
backgroundWorker.CancelAsync取消操作
小菲1215
2009-07-31 01:28:11
为什么执行了backgroundWorker.CancelAsync,线程还是在运行呢,请问有什么更好的办法吗?
...全文
1241
9
打赏
收藏
backgroundWorker.CancelAsync取消操作
为什么执行了backgroundWorker.CancelAsync,线程还是在运行呢,请问有什么更好的办法吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
神秘_博士
2012-10-30
打赏
举报
回复
http://www.csharpwin.com/csharpspace/2460.shtml
神秘_博士
2012-10-30
打赏
举报
回复
worker.WorkerSupportsCancellation = true;这个要设置为true 否则调用CancelAsync();异常
lihaMIMI
2012-10-29
打赏
举报
回复
晕死,退出终止线程应该用 exit sub 即可。不存在在线程内用e.Cancel = true的问题
摸着石头前行
2012-10-23
打赏
举报
回复
我也遇到这个问题,求教!上面提到的
if (worker.CancellationPending)
{
e.Cancel = true;
}
都有判断,
调试发现CancelAsync();被执行了多次,循环还在继续。
yunhaiC QQ654777694
2010-04-02
打赏
举报
回复
[Quote=引用 2 楼 hbxtlhx 的回复:]
CancelAsync 提交终止挂起的后台操作的请求,并将 CancellationPending 属性设置为 true。
你需要读取这个属性,例如:
if (worker.CancellationPending)
{
e.Cancel = true;
}
[/Quote]
这样似乎还是报错啊,并不能终止线程
LQknife
2009-07-31
打赏
举报
回复
不会终止线程只是把标志位设为true
然后你根据这个标志位中断执行流程
huwei001982
2009-07-31
打赏
举报
回复
CancelAsync 仅仅是把 BackgroundWorker.CancellationPending属性 赋为 true, 并不能终止线程的执行
所以你需要在线程中判断 BackgroundWorker.CancellationPending属性, 如果为 true, 则退出线程
北京的雾霾天
2009-07-31
打赏
举报
回复
CancelAsync 提交终止挂起的后台操作的请求,并将 CancellationPending 属性设置为 true。
你需要读取这个属性,例如:
if (worker.CancellationPending)
{
e.Cancel = true;
}
北京的雾霾天
2009-07-31
打赏
举报
回复
你需要在你的线程里读取这个属性用来使线程退出。
WinForm进度条的2种异步实现方式
在WinForm中,比如一些文件传输和一些费时的
操作
,如果处理不好就会造成“假死”的情况,为此我们可以采用进度条进行友好提示。
Background
Worker
类是.net 2.0里新增加的一个类,对于需要长时间
操作
而不需要用户长时间等待的情况可以使用这个类。 注意确保在 DoWork 事件处理程序中不
操作
任何用户界面对象。而应该过 ProgressChanged 和 Run
Worker
Completed 事件与用户界面进行通信。 它有几个主要属性: Can
cel
lationPending——指示应用程序是否已请求
取消
后台
操作
。 IsBusy——指示
Background
Worker
是否正在运行异步
操作
Worker
ReportsProgress——该值指示
Background
Worker
能否报告进度更新
Worker
SupportsCan
cel
lation——该值指示
Background
Worker
是否支持异步
取消
还有如下事件: DoWork——调用 Run
Worker
Async
时发生。 ProgressChanged——调用 ReportProgress 时发生。 Run
Worker
Completed——当后台
操作
已完成、被
取消
或引发异常时发生。 还有如下方法: Can
cel
Async
——请求
取消
挂起的后台
操作
ReportProgress——引发 ProgressChanged 事件 Run
Worker
Async
——开始执行后台
操作
如果启用
取消
线程则设置
Worker
SupportsCan
cel
lation = true;然后调用 Can
cel
Async
方法即可。
Background
Worker
取消
异步真正的解决方案
今天做了一个项目,其中使用到了
Background
Worker
,但是使用的时候遇到了一个问题。 问题:已经设置了bg
Worker
.
Worker
SupportsCan
cel
lation = true; 并且已经bg
Worker
.Can
cel
Async
(); 但是在最后的最后访问bg
Worker
.Can
cel
lationPending值仍然为false,这就让人郁闷了。 后来...
Winform中设置
Background
Worker
在
取消
时关闭后台进程
场景 在Winform中拖拽 一个
Background
Worker
控件,配合进度条控件能开启一个后台线程并报告进度条进度。 但是在执行后台线程的任务时,如果想要
取消
,怎样让其停止执行。 注: 博客主页:https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 设置可
取消
为true 将B...
支持
取消
操作
和暂停
操作
的
Background
worker
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Thr
(后台处理耗时
操作
方案)
BackGround
Work的使用方法
在一些耗时的
操作
过程中,在长时间运行时可能会导致用户界面 (UI) 处于停止响应状态,用户在这
操作
期间无法进行其他的
操作
,为了不使UI层处于停止响应状态,我们倾向推荐用户使用
Background
Worker
来进行处理,这个后台的线程处理,可以很好的实现常规
操作
的同时,还可以及时通知UI,包括当前处理信息和进度等
Background
Worker
类在 System.ComponentModel...
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章