基于APM模式的异步实现及跨线程操作窗体或控件方法的实现示例
2013-07-17 11:44
896 查看
最近在一家某电力外派公司开发相关于GIS的功能,在实现代码的过程中出现了一些常见的问题比如:
1、跨线程执行窗体或控件操作(直接使用委拖)
2、异步模式执行某长时间耗时方法
经过一系列摸索可算找到解决方案,这里就记录一下两个重要的东西的使用方法
顺便包含一下关于WPF跨线程操作控件的方法
1、跨线程执行窗体或控件操作(直接使用委拖)
2、异步模式执行某长时间耗时方法
经过一系列摸索可算找到解决方案,这里就记录一下两个重要的东西的使用方法
// 跨窗体或控件执行某个窗体的方法(使用委拖) public void Main(string[] args) { Invoke(new MethodInvoker(delegate() { // 这里是要执行的方法或相关操作 })); } // APM模式异步带参数实现 public void Main(string[] args) { Action<T> action = new Action<T>(BeginSampleCallBack); action.BeginInvoke(new T(),new AsyncCallback(EndSampleCallBack),action); } void BeginSampleCallBack<T>(T obj) { // 这里是要执行的方法或相关操作 } void EndSampleCallBack(IAsyncResult ar) { Action<T> action = (Action<T>)ar.AsyncState; action.EndInvoke(ar); } // APM模式异步无参数实现 public void Main(string[] args) { Action action = new Action(BeginSampleCallBack); action.BeginInvoke(new AsyncCallback(EndSampleCallBack),action); } void BeginSampleCallBack() { // 这里是要执行的方法或相关操作 } void EndSampleCallBack(IAsyncResult ar) { Action<T> action = (Action<T>)ar.AsyncState; action.EndInvoke(ar); }
顺便包含一下关于WPF跨线程操作控件的方法
object.Dispatcher.Invoke(new Action(() => { // 要做的事情 }));
相关文章推荐
- C# :线程中操作多控件 (委托实现异步及同步的方法)
- C# 在自定义线程中采用系统委托方式操作主窗体线程控件的方法
- C#中子线程操作主线程中窗体上控件的方法
- C#中子线程操作主线程中窗体上控件的方法
- JavaScript基于对象方法实现数组去重及排序操作示例
- C# 子线程操作主窗体控件的解决方法
- C#中子线程操作主线程中窗体上控件的方法
- C#中子线程操作主线程中窗体上控件的方法
- C# 子线程操作主窗体控件的解决方法
- C#中子线程操作主线程中窗体上控件的方法
- C#中子线程操作主线程中窗体上控件的方法
- C#中子线程操作主线程中窗体上控件的方法
- 实现子线程上操作窗体控件
- java基于移位操作实现二进制处理的方法示例
- 用Reactive Extension实现异步方法超时的操作
- Java基于余弦方法实现的计算相似度算法示例
- WinForm中新开一个线程操作窗体上的控件(跨线程操作控件)GOOD
- ACE_Future实现了单写多读模式,可以用来异步方法调用的结果返回
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~