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

推荐订阅源

V
V2EX
量子位
博客园 - 司徒正美
IT之家
IT之家
V
Visual Studio Blog
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
Google DeepMind News
Google DeepMind News
Last Week in AI
Last Week in AI
Microsoft Security Blog
Microsoft Security Blog
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
GbyAI
GbyAI
Vercel News
Vercel News
B
Blog
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
小众软件
小众软件
罗磊的独立博客
博客园 - 叶小钗
雷峰网
雷峰网
Martin Fowler
Martin Fowler
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学

博客园 - 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);