C#中BeginInvoke和EndInvoke的用法
来源:互联网 发布:windows search索引器 编辑:程序博客网 时间:2024/05/17 14:19
有时候, 我们希望在当前UI线程中去做另一件费时的事, 但是我们知道:在当前UI线程中直接调用一个类似while(true)这样的操作, 我们的UI会出现无响应的情况. 如何避免这种情况呢, C#为我们准备了BeginInvoke和EndInvoke.
首先定义一个委托:
然后写一个非常操作的方法, 当然方法的签名要和委托一致.
再添加一个完成方法
最后是我们的调用方法:
首先定义一个委托:
private delegate int ConsumeTimeDelegate(int iPercent);
然后写一个非常操作的方法, 当然方法的签名要和委托一致.
private int ConsumeTimeFunc(int iPercent){ int i = 0; for(i = 0; i < 100000; i++) { Console.WriteLine(i.ToString()); } iPercent = i; return iPercent;}
再添加一个完成方法
private void MethodCompleted(IAsyncResult asyncResult){ if (null == asyncResult) return; String str = (asyncResult.AsyncState as MyDelegate).EndInvoke(asyncResult).ToString(); Console.WriteLine("---------MethodCompleted() called. str:" + str);}
最后是我们的调用方法:
ConsumeTimeDelegate consumeDelegate = ConsumeTimeFunc;IAsyncResult asyncResult = consumeDelegate.BeginInvoke(0, MethodCompleted, consumeDelegate);
- C#中BeginInvoke和EndInvoke的用法
- C# 多线程中BeginInvoke和EndInvoke方法
- C#委托的BeginInvoke和EndInvoke方法
- C#之begininvoke和endinvoke
- c#中invoke和begininvoke的用法
- C#中的BeginInvoke和EndInvoke实现异步
- C#线程:BeginInvoke和EndInvoke方法
- C#中的BeginInvoke和EndInvoke实现异步
- C#中的BeginInvoke和EndInvoke实现异步
- C#线程:BeginInvoke和EndInvoke方法
- C# BeginInvoke和EndInvoke异步调用
- C#线程:BeginInvoke和EndInvoke方法
- C#线程:BeginInvoke和EndInvoke方法
- C#线程:BeginInvoke和EndInvoke方法
- C# BeginInvoke和EndInvoke方法操作线程
- 委托的BeginInvoke 和 EndInvoke及构造
- BeginInvoke和EndInvoke 随笔
- BeginInvoke和EndInvoke方法
- j2se之算数运算符
- 如何下载网页中背景音乐
- Python 与 C++ 的交互编程
- 素数环(nyoj488)
- Linux进程fork execu之数据和文件描述符的继承
- C#中BeginInvoke和EndInvoke的用法
- linux内核文件翻译- RPCSEC_GSS内核RPC服务器支持
- 收集的图像处理网站http://blog.csdn.net/chief1985/article/details/1898358
- Ubuntu 13.10 eclipse菜单栏失效
- OpenCV之Python学习笔记
- ubuntu下创建eclipse桌面快捷方式
- linux内核文件翻译-Fault Injection故障注入
- [LeetCode] Simplify Path
- exp和imp的参数