Winform中设置BackgroundWorker在取消时关闭后台进程
场景
在Winform中拖拽 一个BackgroundWorker控件,配合进度条控件能开启一个后台线程并报告进度条进度。
但是在执行后台线程的任务时,如果想要取消,怎样让其停止执行。
注:
博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
设置可取消为true
将BackgroundWorker控件的WorkerSupportsCancellation属性设置为true。

这里是直接通过控件设置属性的方式,如果是直接声明的对象,则可以通过对象.属性去设置。
如果不设置则会提示:此BackgroundWorker声明它不支持取消。。。

发起取消后台操作的请求
在上面允许取消后,在取消按钮的点击事件中发起取消后台操作的请求。
this.backgroundWorker1.CancelAsync();
完整示例代码
private void btnCancel_Click(object sender, EventArgs e)
{
this.backgroundWorker1.CancelAsync();
this.DialogResult = DialogResult.Cancel;
this.Close();
}
真正取消后台操作
上面发起取消后台操作的请求后,并不会真正关闭后台进程,只是报告要取消后台进程。
如果要执行的操作是一个循环则会一直循环完。
在进行后台具体执行的操作时是这样绑定的
this.backgroundWorker1.DoWork += backgroundWorker1_DoWork;
//触发事件
this.backgroundWorker1.RunWorkerAsync();
所以要在具体执行后台操作的方法 backgroundWorker1_DoWork中去进行判断并终止
在上面进行请求取消操作后,那么BackgroundWorker对象的CancellationPending属性就为true。
所以在具体执行后台操作的方法中的循环操作中
BackgroundWorker bgWorker = sender as BackgroundWorker;
if ((bgWorker.CancellationPending == true))
{
e.Cancel = true;
errMsg = "已取消导出";
return false;
}
if (e.Cancel)
{
errMsg = "已取消导出";
return false;
}
Winform中设置BackgroundWorker在取消时关闭后台进程的更多相关文章
- Winform中设置ZedGraph鼠标悬浮显示举例最近曲线上的点的坐标值和X轴与Y轴的标题
场景 Winform中设置ZedGraph鼠标双击获取距离最近曲线上的点的坐标值: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/ ...
- Winform中设置ZedGraph的曲线为散点图
场景 Winform中设置ZedGraph的曲线符号Symbol以及对应关系: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- Winform中设置ZedGraph的曲线为折线、点折线、散点图
场景 Winform中设置ZedGraph的曲线为散点图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102465399 在上 ...
- Winform中使用FastReport的DesignReport时怎样设置Table的size自动调整
场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- Winform中使用FastReport的PictureObject时通过代码设置图片源并使Image图片旋转90度
场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- Winform中设置ZedGraph多条Y轴时坐标轴左右显示设置
场景 Winform中实现ZedGraph的多条Y轴(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1001322 ...
- Winform中设置ZedGraph鼠标焦点位置画出十字线并在鼠标移出时十字线消失
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- Winform中设置多条Y轴时新增的Y轴刻度不显示问题解决
场景 Winform中实现ZedGraph的多条Y轴(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1001322 ...
- WinForm中使用BackgroundWorker异步加载数据并使用进度条
在WinForm程序中,有时会因为加载大量数据导致UI界面假死,这种情况对于用户来说是非常不友好的.因此,在加载大量数据的情况下,首先应该将数据加载放在另一线程中进行,这样保证了UI界面的响应:其次可 ...
随机推荐
- handler.postDelayed(new Runnable()){ }运行在主线程吗
答案:是的. handler.postDelayed(new Runnable() { @Override public void run() { tv_word.setVisibility(View ...
- 由malloc和new引发的段错误
class Queue{ private: struct node{ string data; struct node * next,*priv; } private: struct node * p ...
- WPF 3D足球导览
根据博文:https://www.cnblogs.com/duel/p/regular3dpoints.html获取足球的3D坐标后,在每一个坐标位置创建一个ModelVisual3D元素,既能实现炫 ...
- centos_mysql 安装脚本
#!/bin/bash env echo "Download msyql5.7 rpm..." sudo yum install wget wget -i -c http://de ...
- weui实现滚动加载的效果
weui是微信公司提供的一个UI框架,在H5开发中一些组件可以直接使用.weui文档地址:http://www.jqweui.cn/components 使用weui,需要引入weui.css和jqu ...
- 系统 (一) Windows10安装Ubuntu子系统
前言 本文将基于 Windows10专业版 安装 Ubuntu子系统 1.控制面板 -> 程序 -> 选择启用或关闭Windows功能 -> 勾上 适用Linux的Windwos子系 ...
- C#中转换运算符explicit、implicit、operator、volatile研究
C#中的这个几个关键字:explicit.implicit与operator,估计好多人的用不上,什么情况,这是什么?字面解释:explicit:清楚明白的;易于理解的;(说话)清晰的,明确的;直言的 ...
- 一分钟理解Java公平锁与非公平锁
本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...
- Java 基础复习 -- Enum 类
一.枚举类基本语法 在 Java SE5 中添加了一个看似很小的特性,即 enum 关键字,它使得我们在需要群组并使用枚举类型集时,可以很方便的处理. 所有的 enum 都继承自 java.lang. ...
- nginx将http升级到https并且同时支持http和https两种请求、http自动转向https
1.http升级到https 1.1.检查 Nginx 是否支持 SSL /usr/local/nginx/sbin/nginx -V configure arguments中是否有--with-ht ...