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

C# -- 使用委托 delegate 执行异步操作

发布时间:2020-12-15 04:45:12 所属栏目:百科 来源:网络整理
导读:C# -- 使用委托 delegate 执行异步操作 委托是一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似。 与 C 中的函数指针不同,委托是面向对象的、类型安全的和保险的。 委托的类型由委托的名称定义。 1. 使用委托异步执行方法 myWorking( /spanspan s

C# -- 使用委托 delegate 执行异步操作

委托是一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似。 与 C 中的函数指针不同,委托是面向对象的、类型安全的和保险的。

委托的类型由委托的名称定义。

1. 使用委托异步执行方法

myWorking( </span><span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;void</span> Main(<span style="color: #0000ff"&gt;string</span><span style="color: #000000"&gt;[] args) { Console.WriteLine(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;主线程开始....线程ID:{0}</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;,Thread.CurrentThread.ManagedThreadId); myWorking myWork1 </span>= <span style="color: #0000ff"&gt;new</span> myWorking(w1 =><span style="color: #000000"&gt; Working(w1)); myWorking myWork2 </span>= <span style="color: #0000ff"&gt;new</span> myWorking(w2 =><span style="color: #000000"&gt; Working(w2)); myWorking myWork3 </span>= <span style="color: #0000ff"&gt;new</span> myWorking(w3 =><span style="color: #000000"&gt; Working(w3)); myWorking myWork4 </span>= <span style="color: #0000ff"&gt;new</span> myWorking(w4 =><span style="color: #000000"&gt; Working(w4)); myWorking myWork5 </span>= <span style="color: #0000ff"&gt;new</span> myWorking(w5 =><span style="color: #000000"&gt; Working(w5)); </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;回调函数</span> AsyncCallback callback=<span style="color: #0000ff"&gt;new</span> AsyncCallback(s=>Console.WriteLine(<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;执行完成,线程ID:{0}</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;,Thread.CurrentThread.ManagedThreadId)); </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;BeginInvoke异步执行,会新启动其他线程去执行代码</span> myWork1.BeginInvoke(<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;唱歌</span><span style="color: #800000"&gt;"</span>,callback,<span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;); myWork2.BeginInvoke(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;写代码</span><span style="color: #800000"&gt;"</span>,<span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;); myWork3.BeginInvoke(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;查资料</span><span style="color: #800000"&gt;"</span>,<span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;); myWork4.BeginInvoke(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;交作业</span><span style="color: #800000"&gt;"</span>,<span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;); myWork5.BeginInvoke(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;检查</span><span style="color: #800000"&gt;"</span>,<span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;); Console.WriteLine(</span><span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;主线程结束....线程ID:{0}</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;,Thread.CurrentThread.ManagedThreadId); Console.ReadKey(); } </span><span style="color: #0000ff"&gt;private</span> <span style="color: #0000ff"&gt;static</span> <span style="color: #0000ff"&gt;void</span> Working(<span style="color: #0000ff"&gt;string</span><span style="color: #000000"&gt; strWork) { Console.WriteLine(strWork</span>+<span style="color: #800000"&gt;"</span><span style="color: #800000"&gt;.....线程ID:{0}</span><span style="color: #800000"&gt;"</span><span style="color: #000000"&gt;,Thread.CurrentThread.ManagedThreadId); Thread.Sleep(</span><span style="color: #800080"&gt;3000</span><span style="color: #000000"&gt;); } }</span></pre>

2. 执行结果:

(编辑:李大同)

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

    推荐文章
      热点阅读