加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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"&gt;"</span><span style="color: #800000"&gt;线程ID:{0},回调函数执行:{1}</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;,Thread.CurrentThread.ManagedThreadId,c.AsyncState); IAsyncResult result1</span>= mySum1.BeginInvoke(<span style="color: #800080"&gt;10000</span>,callback,<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;第一个异步</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;); IAsyncResult result2</span>= mySum2.BeginInvoke(<span style="color: #800080"&gt;10000</span>,<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;第二个异步</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;); IAsyncResult result3</span>= mySum3.BeginInvoke(<span style="color: #800080"&gt;10000</span>,<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;第三个异步</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;); </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;异步等待方式1:使用EndInvoke</span> <span style="color: #0000ff"&gt;int</span> asyc1 =<span style="color: #000000"&gt; mySum1.EndInvoke(result1); Console.WriteLine(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;第一个异步已经执行完成,结果:{0}</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;,asyc1); </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;异步等待方式2:使用AsyncWaitHandle.WaitOne,参数-1表示一直等待到执行完成</span> <span style="color: #0000ff"&gt;if</span> (result2.AsyncWaitHandle.WaitOne(-<span style="color: #800080"&gt;1</span><span style="color: #000000"&gt;)) { Console.WriteLine(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;第二个异步执行完成</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;); } </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;异步等待方式3:使用IsCompleted判断</span> <span style="color: #0000ff"&gt;while</span> (!<span style="color: #000000"&gt;result3.IsCompleted) { Console.WriteLine(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;第三个异步还在执行中....</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;); Thread.Sleep(</span><span style="color: #800080"&gt;300</span><span style="color: #000000"&gt;); } Console.WriteLine(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;第三个异步执行完成</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;); Console.ReadKey(); } </span><span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;int</span> SumNumbers(<span style="color: #0000ff"&gt;int</span><span style="color: #000000"&gt; count) { </span><span style="color: #0000ff"&gt;int</span> sum = <span style="color: #800080"&gt;0</span><span style="color: #000000"&gt;; </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;int</span> i = <span style="color: #800080"&gt;0</span>; i < count; i++<span style="color: #000000"&gt;) { sum </span>+=<span style="color: #000000"&gt; i; } Thread.Sleep(</span><span style="color: #800080"&gt;3000</span><span style="color: #000000"&gt;); </span><span style="color: #0000ff"&gt;return</span><span style="color: #000000"&gt; sum; } }</span></pre>

2. 代码执行结果:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读