【WPF/C#】使用BackgroundWorker实现多线程/异步操作
2023-09-11 14:22:26 时间
做WPF时需要做一个异步加载时的Loading遮罩,搜Stackoverflow看到很多方法,看到了这个插件:
BusyIndicator in the extended WPF Toolkit
同时进一步学习了WPF中使用BackgroundWorker类异步操作的经典文章,赶紧Mark一下:
https://elegantcode.com/2011/10/07/extended-wpf-toolkitusing-the-busyindicator/
https://elegantcode.com/2009/07/03/wpf-multithreading-using-the-backgroundworker-and-reporting-the-progress-to-the-ui/
知其然,知其所以然。赶紧学习一下。 :)
2016.12.28更新:
选择用async/await特性,还是用BackgroundWorker类:
- async/await更适合那些需要在后台完成的不相关的小任务,默默开始,默默结束。
- BackgroundWorker适合在后台工作的同时要跟主线程通信的情况,如实时反馈工作进度,允许用户中途中断这个任务,任务完成后的回调等等。
2017.1.18更新:
想一想还是直接把最常用的关键部分贴出来比较方便:
private void DoSomething()
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (o, ea) =>
{
Operation(); // 耗时操作
};
worker.RunWorkerCompleted += (o, ea) =>
{
// work has completed. you can now interact with the UI
// 如隐藏前台Loading遮罩层
};
// 如显示前台Loading遮罩层
worker.RunWorkerAsync();
}
2017.8.23更新:
多线程解决界面死的例子:http://www.cnblogs.com/wangchuang/p/4485797.html
相关文章
- c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
- [译]聊聊C#中的泛型的使用(新手勿入) Seaching TreeVIew WPF 可编辑树Ztree的使用(包括对后台数据库的增删改查) 字段和属性的区别 C# 遍历Dictionary并修改其中的Value 学习笔记——异步 程序员常说的「哈希表」是个什么鬼?
- .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了 [WPF]为旧版本的应用添加触控支持 js css等静态文件版本控制,一处配置多处更新.net版【原创】 C#图片处理,缩略图制作 SqlDataReader 结果集 转成 DataTable DataTable转成List集合 如何使用linq读取DataTable集合?
- C#7.2——编写安全高效的C#代码 c# 中模拟一个模式匹配及匹配值抽取 走进 LINQ 的世界 移除Excel工作表密码保护小工具含C#源代码 腾讯QQ会员中心g_tk32算法【C#版】
- C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库
- 利用反射快速给Model实体赋值 使用 Task 简化异步编程 Guid ToString 格式知多少?(GUID 格式) Parallel Programming-实现并行操作的流水线(生产者、消费者) c# 无损高质量压缩图片代码 8种主要排序算法的C#实现 (一) 8种主要排序算法的C#实现 (二)
- C#不用union,而是有更好的方式实现 .net自定义错误页面实现 .net自定义错误页面实现升级篇 .net捕捉全局未处理异常的3种方式 一款很不错的FLASH时种插件 关于c#中委托使用小结 WEB网站常见受攻击方式及解决办法 判断URL是否存在 提升高并发量服务器性能解决思路
- wpf 导出Excel Wpf Button 样式 wpf简单进度条 List泛型集合对象排序 C#集合
- C#中泛型方法与泛型接口 C#泛型接口 List<IAll> arssr = new List<IAll>(); interface IPerson<T> c# List<接口>小技巧 泛型接口协变逆变的几个问题
- 深入理解MVC C#+HtmlAgilityPack+Dapper走一波爬虫 StackExchange.Redis 二次封装 C# WPF 用MediaElement控件实现视频循环播放 net 异步与同步
- c# .net 根据参数名称的ASCII码表的顺序排序,使用SortedDictionary字典
- C#反射获取属性值和设置属性值
- C#调用Win32 api学习总结
- C#机器学习之判断日报是否合格
- c#的参数调用
- C#【文件操作篇】使用Path类、Environment类获取路径、文件名、扩展名
- 《C#多线程编程实战(原书第2版)》——导读
- [C#] Direct2D 学习笔记 (一)vb.net转换为c#
- C# Button 按钮触发清空textBox控件内容
- c# 比较字符串
- C# lock 关键字的一些理解
- C# 委托实例(跨窗体操作控件)
- C#命名空间
- Aspx Ajax 调用 C#函数处理数据
- C# 序列化、反序列化
- 【C#】时间日期格式转换:long和DateTime相互转换
- 【WPF】C#代码动态添加控件的Margin属性
- c#类的定义,c#中的关健字,C#标识符