参考1
<a href="http://msdn.microsoft.com/en-us/library/system.iasyncresult.aspxhttp://hi.baidu.com/baixiaoxu/blog/item/a6119c285207c6f398250a6b.html">
http://msdn.microsoft.com/en-us/library/system.iasyncresult.aspxhttp://hi.baidu.com/baixiaoxu/blog/item/a6119c285207c6f398250a6b.html
</a>
http://msdn.microsoft.com/zh-cn/library/system.iasyncresult(v=vs.80).aspx
通过异步的方式防止界面死掉
1.使用 backgrounderworker
2.IAsyncResult
本来是 学习EnterpriseLibrary Logger模块 看看事例觉得 IAsyncResult 没有学好 很生回味一遍
以此为记。
总结不出新的东西。
具体模型就是:
1 定义委托:public delegate string AsyncMethodCaller(int callDuration, out int threadId);
2.实例化 关联方法(那些操作耗时的方法) AsyncMethodCaller asyCaller = new AsyncMethodCaller(ad.TestMethod);
3.委托调用: BeginInvoke() IAsyncResult result = asyCaller.BeginInvoke(2000, out threadId, null, null);
4. 调用结束 :EndInvoke()string returnValue = asyCaller.EndInvoke(out threadId, result);
5.关闭释放 result.AsyncWaitHandle.Close();
--------------
1. 中间还可以判断是否 完成result.IsComplete; 术语叫做轮询
2.是否等另外一个异步完成 result.AsyncWaitHandle.WaitOne();
-------------------------------------
可以直接执行回调函数
AsyncMethodCaller asyCaller = new AsyncMethodCaller(ad.TestMethod);
asyCaller.BeginInvoke(new AsyncCallback(c.CallbackMethod),asy);