线程类
来源:互联网 发布:长江交易软件下载 编辑:程序博客网 时间:2024/06/10 17:43
public class UIAsyncJober { public delegate void JoberRunMethodDelegate(UIAsyncJober job); private static Dictionary<string, UIAsyncJober> jobs = new Dictionary<string, UIAsyncJober>(); private ThreadStart beforeMethod = null; private ThreadStart runMethod = null; private ThreadStart doneMethod = null; private ThreadStart inProcessMethod = null; private SynchronizationContext context; private UIAsyncJober() { context = SynchronizationContext.Current; } public static UIAsyncJober GetJob() { return GetJob(Guid.NewGuid().ToString()); } public static UIAsyncJober GetJob(string id) { if (jobs.ContainsKey(id)) { return jobs[id]; } var newjob = new UIAsyncJober(); jobs.Add(id, newjob); return newjob; } public UIAsyncJober BeforeStart(ThreadStart method) { this.beforeMethod = method; return this; } public UIAsyncJober Run(ThreadStart method) { this.runMethod = method; return this; } public UIAsyncJober Done(ThreadStart method) // 还用ThreadStart委托,只是不想再定义一个委托了 { this.doneMethod = method; return this; } public UIAsyncJober InProcess(ThreadStart method) { this.inProcessMethod = method; return this; } public void ReportProcess() { context.Send(new SendOrPostCallback( s => { inProcessMethod(); } ), null); } Thread current = null; public void Start() { // stop already running thread if (current != null) { try { current.Abort(); } catch (Exception) { // do nothing } } if (beforeMethod != null) { beforeMethod(); } current = new Thread(new ThreadStart(innerRun)); current.Start(); } public void Abort() { if (current != null) { try { current.Abort(); } catch (Exception ex) { } } } private void innerRun() { runMethod(); context.Send(new SendOrPostCallback( s => { if (doneMethod != null) { doneMethod(); } } ), null); } }
UIAsyncJober jober = UIAsyncJober.GetJob(""); jober.Run(delegate() { }).Done(delegate() { }).InProcess(() => { //显示进度 }).Start();
0 0
- 线程与线程类
- 线程类
- 线程类
- 线程池类,线程管理器:创建线程,执行任务,销毁线程,获取线程基本信息
- [Win32] [线程] [NCThread] [NCThreadPool] 线程类、线程管理类
- 线程【五】VCL下的线程类
- 线程类,线程函数的终止
- 类封装线程(动态线程)
- QT线程(一):线程类
- 线程类,线程函数的终止 .
- QT线程(一):线程类
- QT线程(一):线程类
- 多线程篇1 线程与线程类
- QT线程(一):线程类
- Thread Runable线程与线程类
- 线程控制 - AfxBeginThreadUI线程的封装类
- QT线程(一):线程类
- Java线程之线程池--类ThreadPoolExecutor
- java处理json数据格式
- Java NIO系列教程(九) ServerSocketChannel
- 程序调试的利器—日志
- Linked List Cycle
- Oracle 字符集的查看和修改(二)
- 线程类
- Android应用开发相关下载资源
- 每天进步一点点——负载均衡之HTTP重定向
- Java NIO 系列教程
- MFC命名规则
- HDS成为2014-2015年度云计算大奖得主
- 再用环信sdk注册时返回错误码-1(appkey is not set)
- allegro入门笔记-PCB板框的绘制与封装的对应
- VS2010 + QT5 SerialPort 串口应用实例总结