惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
G
Google Developers Blog
D
Docker
The GitHub Blog
The GitHub Blog
H
Help Net Security
WordPress大学
WordPress大学
博客园_首页
Recent Announcements
Recent Announcements
P
Proofpoint News Feed
罗磊的独立博客
I
InfoQ
U
Unit 42
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
Jina AI
Jina AI
J
Java Code Geeks
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
DataBreaches.Net
Google DeepMind News
Google DeepMind News

博客园 - nametmp

【转】Resource与Resx的区别 - nametmp - 博客园 Winform用匿名方法新建线程的方法 enum枚举用法笔记 对C#委托的理解 对using的新认识 视频文件信息读取器 琐碎记录 【转贴】GridView里面的HYPERLINK数据邦定 【转贴】数据邦定语法 - nametmp - 博客园 TableAdapter、Dataset与BindingSource的关系 webform 可视化在gridview中加入其它控件 WinForm 加入登陆窗体(c#) winform 中的 datagridview 添加 progressbar列 和 calendar 列 远程删除Kaspersky(被Kaspersky搞了一天) SqlServer2000登陆角色的具体权限 终于用sqlcmd连上sqlserver2005express了 sqlserver操作摘录 [转]SQL Server 2005中的SQLCMD工具使用 [转]sqlserver2005(Express版)的配置
异步调用过程
nametmp · 2010-11-17 · via 博客园 - nametmp

1、定义委托
public delegate int AsynComputeCaller(ulong l, out ulong factorial);

2、在委托中加入函数:public int AsynCompute(ulong l, out ulong factorial)
AsynComputeCaller caller = new AsynComputeCaller(AsynCompute);

3、开始异步调用
ulong l = 30;
ulong lf;
IAsyncResult iResult = caller.BeginInvoke(l, out lf, null, null);

4.1、用IsCompleted
while (iResult.IsCompleted == false)
{
   // 主线程进行一些操作
   Thread.Sleep(10);
}

4.2、WaitOne(单个结果)
// 主线程进行一些操作
System.Threading.WaitHandle waiHand = iResult.AsyncWaitHandle;
waiHand.WaitOne();

4.3、WaitAll、WaitAny(多个结果)
// 主线程进行一些操作
System.Threading.WaitHandle.WaitAll(new System.Threading.WaitHandle[] { waiHand 1,waiHand 2});
WaitHandle.WaitAny(waitHandles,60000, false);

5、获取异步结果
int returnValue = caller.EndInvoke(out lf,iResult);