真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

.NET委托解析(異步委托)-創(chuàng)新互聯(lián)

上一篇我們了解到了,委托的基本感念,列舉了幾個(gè)委托的實(shí)例,并根據(jù)實(shí)例來(lái)反編譯源碼查看.NET 委托的內(nèi)部實(shí)現(xiàn),從淺入深的角度來(lái)詳細(xì)的去解析委托的實(shí)質(zhì),本文將系上篇繼續(xù)討論異步委托的實(shí)現(xiàn)以及異步委托的源碼解析。

創(chuàng)新互聯(lián)成立以來(lái)不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場(chǎng)為導(dǎo)向”的快速反應(yīng)體系。對(duì)公司的主營(yíng)項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計(jì)、行業(yè) / 企業(yè)門戶設(shè)計(jì)推廣、行業(yè)門戶平臺(tái)運(yùn)營(yíng)、重慶APP軟件開發(fā)、成都手機(jī)網(wǎng)站制作、微信網(wǎng)站制作、軟件開發(fā)、服務(wù)器托管等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)可以獲得的服務(wù)效果。

首先本文只會(huì)從委托的層面的去編寫,不會(huì)涉及到深層次的異步.(后續(xù)的系列中將會(huì)對(duì)異步進(jìn)行深入講解.敬請(qǐng)關(guān)注.).

委托的異步調(diào)用方式

在上一篇中我們?cè)趯?shí)例中是直接通過(guò)委托對(duì)象的,例如:

private static void Main(string[] args)
 {
       Program.MyPersonDelegate personDelegate = new Program.MyPersonDelegate(Person.GetPersonName);
       personDelegate("Static");
 }
點(diǎn)擊personDelegate查看:
// FuncActionDemo.Program.MyPersonDelegatepublic virtual extern void Invoke(string name);
我們可以看到委托對(duì)象的默認(rèn)調(diào)用方式是Invoke(同步調(diào)用).另外我們將它進(jìn)行反編譯查看一下 :
.NET委托解析(異步委托)

.NET委托解析(異步委托)

我們可以看到委托對(duì)象有void Invoke , System.IAsyncResult BeginInvoke,void EndInvoke . 這三個(gè)構(gòu)造函數(shù),我們下面先解釋一下這三個(gè)構(gòu)造:
Invoke : 委托回調(diào)函數(shù)時(shí)候的一種同步調(diào)用方式.
BeginInvoke : 委托回調(diào)函數(shù)時(shí)候的一種異步調(diào)用方式.和Invoke對(duì)立
EndInvoke : 異步調(diào)用,用于檢索調(diào)用結(jié)果.
在IT,特別是編程界,概念往往是不容易理解的,當(dāng)然除非你是具備超強(qiáng)的功底.否則還是通過(guò)實(shí)例來(lái)驗(yàn)證一下為好:
public delegate void delegateTest(string str);static void Main(string[] args)
{
delegateTest test = new delegateTest(GetIntance);
IAsyncResult result = test.BeginInvoke("這是異步執(zhí)行的", null, null);
test.EndInvoke(result);
Console.WriteLine("這是同步執(zhí)行的");
Console.ReadLine();    //test.BeginInvoke("", new AsyncCallback((result) => Console.WriteLine("")), null);    //Console.WriteLine(@"異步執(zhí)行的同時(shí)并沒有影響我的執(zhí)行");    //Console.WriteLine(@"異步執(zhí)行的同時(shí)并沒有影響我的執(zhí)行2");    //Console.ReadLine();}private static void GetIntance(string str)
{
    Console.WriteLine(str);
}

在上述代碼中,我們聲明了一個(gè)委托delegateTest, 和一個(gè)靜態(tài)方法GetIntance并有一個(gè)string類型的形參, 然后在Main函數(shù)中,我們創(chuàng)建了一個(gè)委托實(shí)例,并回調(diào)了GetIntance,通過(guò)委托實(shí)例的BeginInvoke來(lái)異步執(zhí)行GetIntance,通過(guò)BeginInvoke的第一個(gè)參數(shù)為GetIntance的實(shí)參( 注意:BeginInvoke的參數(shù),最后兩個(gè)分別為 : CallBack,Object,然后首個(gè)參數(shù)更明確的說(shuō)是BeginInvoke的參數(shù)根據(jù)委托類型的的參數(shù)而定. )之后我們?cè)谕ㄟ^(guò)test.EndInvoke(result);來(lái)判斷異步是否執(zhí)行完成,前面我們說(shuō)過(guò)EndInvoke的作用就是用來(lái)判斷BeginInvoke是否執(zhí)行完成,如果執(zhí)行完成才繼續(xù)執(zhí)行下一步如果沒有完成則等待.,通過(guò)如果我們將EndInvoke去掉,那么最后調(diào)用的結(jié)果肯定為 : "這是同步執(zhí)行的" --> "這是異步執(zhí)行的" . 那么我們加上EndInvoke的話最后的輸出結(jié)果為:"這是異步執(zhí)行的" --> "這是同步執(zhí)行的"; ( 如果大家有異步的概念,對(duì)于這個(gè)其實(shí)很好了解的,關(guān)于異步在接下來(lái)的系列中會(huì)著重編寫. ,首先異步和并發(fā)是密不可分的,其次在目前的研發(fā)中來(lái)講并行編程也是提高生產(chǎn)效率的一種可行性方式,最后微軟在C#5.0中對(duì)與并發(fā)/異步編程的方式進(jìn)行了簡(jiǎn)化,也可以理解為語(yǔ)法糖更豐富了).

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。


網(wǎng)站名稱:.NET委托解析(異步委托)-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://weahome.cn/article/ggscd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部