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界面的响应:其次可 ...
随机推荐
- ajax数据交互
目录 一.ORM查询优化 1-1. only与defer 1-2. select_related与prefatch_related 二.MTV与MVC模型 三.choices参数 四.AJAX 4-1 ...
- linux指令-date
1.在linux中要显示日期,则可以直接输入指令date 2.如果想以这样2016/12/26的方式输出呢,那就是,Y是年份,m是月份,d是日 date +%Y/%m/%d 3.如果要显示时间,则da ...
- UWP 打开系统设置面板
由于UWP各种权限管理的比较严格,所以在执行某一个特殊的操作之前,最好先申请一下相应的权限,以便告知用户你使用了这个权限,而且可以有效的避免App崩溃. 比如你想让用户手动打开麦克风权限,那么可以执行 ...
- windows10 双系统安装后,grub2 引导修复(亲自实验);grub2 命令行 手动加载内核;fedora 29 系统grub2引导修复;
之前在本机有fedora 29的系统,但是由于错误安装,把windows10 启动安装到 linux 所在的硬盘中,导致原来的 efi中的grub启动被破坏,不能进入到linux中:我首先通过磁盘精灵 ...
- 管网平差的python程序
在市政给水管网当中,管网平差的目的是在已知节点流量.管段长度的情况下,求得各管段流量和对应的经济管径.本科生学习阶段了解并掌握管网平差原理及方法是必不可少的环节. 在下面的程序当中,将利用哈代克罗斯法 ...
- threejs 绘制辅助网格
GridHelper.js可以帮助绘制一个xz平面网格,它没有提供更多的参数,所以不能用于生成xy网格. xy网格实现代码如下: var size = 6000; var divisions = 50 ...
- Linux Bash文本操作之sed篇其一
作为Linux系统中文本处理的强力工具之一,sed功能强大,用法多变,值得我们好好学习. sed是用于过滤和转换文本的流编辑器. 一般情况下sed把当前处理的行存储在临时缓冲区,按指定命令处理之后将缓 ...
- 《Netty Zookeeper Redis 高并发实战》 图书简介
<Netty Zookeeper Redis 高并发实战> 图书简介 本书为 高并发社群 -- 疯狂创客圈 倾力编著, 高度剖析底层原理,深度解读面试难题 疯狂创客圈 Java 高并发[ ...
- Fabric-Ca使用
Fabric-Ca的概念不再解释了,这里只说明使用方法: 前置条件 Go语言1.10+版本 GOPATH环境变量正确设置 已安装libtool和libtdhl-dev包 Ubuntu系统 通过以下命令 ...
- SpringAOP基础
例1.已知有这么一段代码,会打印出Hello public static void main(String[] args) { sayHello(); } public static void say ...