C# -- 等待异步操作执行完成的方式
发布时间:2020-12-15 04:45:14 所属栏目:百科 来源:网络整理
导读:C# -- 等待异步操作执行完成的方式 1. 等待异步操作的完成,代码实现: Main( , > mySum1 = , > mySum2 = , > mySum3 = AsyncCallback callback /span= c = Console.WriteLine(span style="color: #800000"gt;"/spanspan style="color: #800000"gt;线程ID:{0
C# -- 等待异步操作执行完成的方式 1. 等待异步操作的完成,代码实现: Main(<,> mySum1 =<,> mySum2 =<,> mySum3 =
AsyncCallback callback </span>= c => Console.WriteLine(<span style="color: #800000">"</span><span style="color: #800000">线程ID:{0},回调函数执行:{1}</span><span style="color: #800000">"</span><span style="color: #000000">,Thread.CurrentThread.ManagedThreadId,c.AsyncState);
IAsyncResult result1</span>= mySum1.BeginInvoke(<span style="color: #800080">10000</span>,callback,<span style="color: #800000">"</span><span style="color: #800000">第一个异步</span><span style="color: #800000">"</span><span style="color: #000000">);
IAsyncResult result2</span>= mySum2.BeginInvoke(<span style="color: #800080">10000</span>,<span style="color: #800000">"</span><span style="color: #800000">第二个异步</span><span style="color: #800000">"</span><span style="color: #000000">);
IAsyncResult result3</span>= mySum3.BeginInvoke(<span style="color: #800080">10000</span>,<span style="color: #800000">"</span><span style="color: #800000">第三个异步</span><span style="color: #800000">"</span><span style="color: #000000">);
</span><span style="color: #008000">//</span><span style="color: #008000">异步等待方式1:使用EndInvoke</span>
<span style="color: #0000ff">int</span> asyc1 =<span style="color: #000000"> mySum1.EndInvoke(result1);
Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">第一个异步已经执行完成,结果:{0}</span><span style="color: #800000">"</span><span style="color: #000000">,asyc1);
</span><span style="color: #008000">//</span><span style="color: #008000">异步等待方式2:使用AsyncWaitHandle.WaitOne,参数-1表示一直等待到执行完成</span>
<span style="color: #0000ff">if</span> (result2.AsyncWaitHandle.WaitOne(-<span style="color: #800080">1</span><span style="color: #000000">))
{
Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">第二个异步执行完成</span><span style="color: #800000">"</span><span style="color: #000000">);
}
</span><span style="color: #008000">//</span><span style="color: #008000">异步等待方式3:使用IsCompleted判断</span>
<span style="color: #0000ff">while</span> (!<span style="color: #000000">result3.IsCompleted)
{
Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">第三个异步还在执行中....</span><span style="color: #800000">"</span><span style="color: #000000">);
Thread.Sleep(</span><span style="color: #800080">300</span><span style="color: #000000">);
}
Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">第三个异步执行完成</span><span style="color: #800000">"</span><span style="color: #000000">);
Console.ReadKey();
}
</span><span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">int</span> SumNumbers(<span style="color: #0000ff">int</span><span style="color: #000000"> count)
{
</span><span style="color: #0000ff">int</span> sum = <span style="color: #800080">0</span><span style="color: #000000">;
</span><span style="color: #0000ff">for</span> (<span style="color: #0000ff">int</span> i = <span style="color: #800080">0</span>; i < count; i++<span style="color: #000000">)
{
sum </span>+=<span style="color: #000000"> i;
}
Thread.Sleep(</span><span style="color: #800080">3000</span><span style="color: #000000">);
</span><span style="color: #0000ff">return</span><span style="color: #000000"> sum;
}
}</span></pre>
2. 代码执行结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |