请问,这个 backgroundWorker异步执行
时间:2011-12-26
来源:互联网
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync(); //开始异步执行
}
private void button2_Click(object sender, EventArgs e)
{
backgroundWorker1.CancelAsync(); //button2取消异步执行
MessageBox.Show(backgroundWorker1.CancellationPending.ToString()); //输出值为true
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Thread.Sleep(10000);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show(backgroundWorker1.CancellationPending.ToString()); //输出值为false
}
问题:
button2取消异步执行时,backgroundWorker的CancellationPending属性为true,可是在异步执行结束的事件RunWorkerCompleted中,CancellationPending属性为什么变成false了呢?
{
backgroundWorker1.RunWorkerAsync(); //开始异步执行
}
private void button2_Click(object sender, EventArgs e)
{
backgroundWorker1.CancelAsync(); //button2取消异步执行
MessageBox.Show(backgroundWorker1.CancellationPending.ToString()); //输出值为true
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Thread.Sleep(10000);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show(backgroundWorker1.CancellationPending.ToString()); //输出值为false
}
问题:
button2取消异步执行时,backgroundWorker的CancellationPending属性为true,可是在异步执行结束的事件RunWorkerCompleted中,CancellationPending属性为什么变成false了呢?
作者: rrcscvs2 发布时间: 2011-12-26
hello..........
作者: rrcscvs2 发布时间: 2011-12-26
當DoWork事件執行完畢進入RunWorkerCompleted事件後,BackgroundWorker的CancellationPending屬性值將會恢復為False
---------------------------------------
http://www.dotblogs.com.tw/billchung/archive/2009/05/30/8597.aspx
你应该设置DoWork方法中 DoWorkEventArgs 这个参数的 Cancel 值
然后在RunWorkerCompleted方法中 判断 RunWorkerCompletedEventArgs.Cancelled
---------------------------------------
http://www.dotblogs.com.tw/billchung/archive/2009/05/30/8597.aspx
你应该设置DoWork方法中 DoWorkEventArgs 这个参数的 Cancel 值
然后在RunWorkerCompleted方法中 判断 RunWorkerCompletedEventArgs.Cancelled
作者: Sandy945 发布时间: 2011-12-26
作者: Sandy945 发布时间: 2011-12-26
引用 3 楼 sandy945 的回复:
之前的那篇文章已经将关键点说出来了, VB 代码不理解的话,看这个
http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx
之前的那篇文章已经将关键点说出来了, VB 代码不理解的话,看这个
http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx
英文啊,看不懂诶
作者: rrcscvs2 发布时间: 2011-12-26
简单的说就是在 DoWork 方法中,要检查CancellationPending 属性
当CancellationPending 为true 时,设置 DoWorkEventArgs.Cancel 为 true
并停止执行 DoWork 中的代码,
在 RunWorkerCompleted 方法中
根据RunWorkerCompletedEventArgs.Cancelled 来检查是否停止
当CancellationPending 为true 时,设置 DoWorkEventArgs.Cancel 为 true
并停止执行 DoWork 中的代码,
在 RunWorkerCompleted 方法中
根据RunWorkerCompletedEventArgs.Cancelled 来检查是否停止
作者: Sandy945 发布时间: 2011-12-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28