C# BackgroundWorker 的使用、封装
示例代码:
PT_USER_INFO user = new PT_USER_INFO(); IList<TES_COMBAT_TASK> taskList = new List<TES_COMBAT_TASK>();BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += (s, e) => {user = HI.Get<Cache.ICacheService>().UserCache.GetCurrentUserInfo();taskList = HI.Get<ITaskService>().GetCombatTaskByUserIDUnfinished(user.ID.ToString());}; worker.RunWorkerCompleted += (s, e) => {try{taskListView.ItemsSource = taskList;}catch { } }; worker.RunWorkerAsync();
View Code
BackgroundWorker封装:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text;/*** 使用方法:BackWork.Run(() => //DoWork {}, () => //RunWorkerCompleted {}, (ex) => //错误处理 {});*/namespace Utils {/// <summary>/// BackgroundWorker封装/// 用于简化代码/// </summary>public class BackWork{/// <summary>/// 执行/// </summary>/// <param name="doWork">DoWork</param>/// <param name="workCompleted">RunWorkerCompleted</param>/// <param name="errorAction">错误处理</param>public static void Run(Action doWork, Action workCompleted, Action<Exception> errorAction){bool isDoWorkError = false;Exception doWorkException = null;BackgroundWorker worker = new BackgroundWorker();worker.DoWork += (s, e) =>{try{if (doWork != null) doWork();}catch (Exception ex){isDoWorkError = true;doWorkException = ex;}};worker.RunWorkerCompleted += (s, e) =>{if (!isDoWorkError){try{if (workCompleted != null) workCompleted();}catch (Exception ex){if (errorAction != null) errorAction(ex);}}else{if (errorAction != null) errorAction(doWorkException);}};worker.RunWorkerAsync();}} }
View Code
转载于:https://www.cnblogs.com/s0611163/p/7080127.html
C# BackgroundWorker 的使用、封装相关推荐
- 封装BackgroundWorker控件(提供源代码下载,F5即可见效果)
Demo源码 背景 经常做些小程序或者小DEMO的时候会用到异步,多线程来执行一些比较耗时的工作同时将进度及时进行反馈.我通常会使用位于[ System.ComponentModel]命名空间下的Ba ...
- c# BackgroundWorker组件介绍(属性、方法、事件)
c# BackgroundWorker组件介绍(属性.方法.事件) 2008-07-03 16:28 在VS2005中添加了BackgroundWorker组件,该组件在多线程编程方面使用起来非常方便 ...
- 稳扎稳打Silverlight(25) - 2.0线程之Thread, Timer, BackgroundWorker, ThreadPool
[索引页] [源码下载] 稳扎稳打Silverlight(25) - 2.0线程之Thread, Timer, BackgroundWorker, ThreadPool 作者:webabcd 介绍 S ...
- zz backgroundworker C#
程序代码 BackgroundWorker组件 在VS2005中添加了BackgroundWorker组件,该组件在多线程编程方面使用起来非常方便,然而在开始时由于没有搞清楚它的使用机制,走了不少的弯 ...
- 关于net2.0里面新出现的类backgroundworker的应用
这是一个在.net2.0里面新出现的类,用于执行后台比较长的任务而又想能和UI有点操作的应用里面. 普通情况下,你点击一个按钮,去后台执行一个process,如果你想得到结果,就得等这个process ...
- Backgroundworker与Thread的区别
最近项目要用到,窗体Form程序要在后台开启几个子线程,负责和其他端进行通信,异步读写,并且来更改UI.在网上查了有Backgroundworker与Thread两种方法. 1.Backgroundw ...
- 关于net2.0里面新出现的一个异步处理类backgroundworker
这是一个在.net2.0里面新出现的类,用于执行后台比较长的任务而又想能和UI有点操作的应用里面. 在研究一个桌面应用程序的时候,看到了backgroundworker 这个类下面是从网上摘要的该类用 ...
- IDEA中将代码块封装为方法,IDEA代码重构快捷键
IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:
- 2022-2028年中国封装用胶膜行业运营现状及投资发展潜力报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了封装用胶膜行业相关概述.中国封装用胶膜行业运行环境.分析了中国封装用 ...
最新文章
- 2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017)
- python jenkins库 api简介
- SecureCRT快捷键
- Leetcode 96. 不同的二叉搜索树 解题思路及C++实现
- 模板:Prufer序列
- c/c++ 友元基本概念
- 捋一捋20201217
- Appium swipe之屏幕上、下、左、右滑动
- MVC控制器执行重定向
- 使用sp_executesql存储过程执行动态SQL查询
- java取set中的元素个数_java中的Set的使用以及各种遍历方法(较为全面)
- 机器视觉硬件选型——镜头选型
- 积累分布用例-洛伦兹曲线和随机游走
- T检验、卡方检验、F检验
- Implementing Infinite Scroll Into a React Component
- java word转图片(word转pdf再转图片)
- matlab特征值归一化,如何用matlab将特征向量归一化呢?
- 基于JAVA网上图书销售系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
- linux下oled显示设计,OLED显示问题
- 并发编程:我对Java并发编程的总结和思考