欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C#中怎么實(shí)現(xiàn)異步調(diào)用

C#中怎么實(shí)現(xiàn)異步調(diào)用,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比青縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式青縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋青縣地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。

首先,C#異步調(diào)用出來的新線程,必須回收,不回收是浪費(fèi)資源的可恥行為,.NET也是不允許的,所以你別想鉆空子,俗話說,請神容易送神難,就是這個道理。下面你可以很容易想到,回收分為2種情況:主動回收和被動回收(當(dāng)然,這是我自己的理解,微軟可不是這么說的),主動回收就是,你去監(jiān)視那個線程,并且等待,當(dāng)C#異步調(diào)用方法完成了,就把C#異步調(diào)用線程回收,焦點(diǎn)回歸主線程,實(shí)際上就是上篇文章《C#C#異步調(diào)用初步》的那種情況,BeginInvoke之后又EndInvoke,如果在EndInvoke的時候,該C#異步調(diào)用線程沒有完成操作,那么整個程序,包括主線程,又在阻塞了,又會出現(xiàn)界面“死”的情況。要想解決這個問題,就使用“被動回收”方式,其中一個重要的辦法就是“C#異步調(diào)用回調(diào)”。

C#異步調(diào)用核心有二:

A、 用回調(diào)函數(shù)(本例中為CallBackMethod),C#異步調(diào)用結(jié)束后,自動調(diào)用此回調(diào)函數(shù)。

B、 而不在主線程中手工等待C#異步調(diào)用結(jié)束,如上兩例中在主線程中調(diào)用EndInvoke。此種方法,是在回調(diào)函數(shù)中調(diào)用EndInvoke的。

C#異步調(diào)用回調(diào)的大概流程是這樣的:首先啟動C#異步調(diào)用,啟動參數(shù)加上C#異步調(diào)用結(jié)束時執(zhí)行的方法,然后這個C#異步調(diào)用線程就不用管了,***當(dāng)這個C#異步調(diào)用線程自己完成工作了,就自動執(zhí)行啟動參數(shù)里的那個方法,這樣確實(shí)很省心,可是代碼寫起來,就很復(fù)雜了。

下面是搜藏的代碼:

//首先準(zhǔn)備好,要進(jìn)行C#異步調(diào)用的方法(能C#異步調(diào)用的,***不多線程)  private string MethodName(int Num, out int Num2)  {   Num2 = Num;   return "HelloWorld";  }    //程序終點(diǎn)  //C#異步調(diào)用完成時,執(zhí)行的方法(回調(diào)方法),  //此方法只能有IAsyncResult一個參數(shù),但是該參數(shù)幾乎***,可以傳遞object  private void CallBackMethod(IAsyncResult ar)  {   //從C#異步調(diào)用狀態(tài)ar.AsyncState中,獲取委托對象   DelegateName dn = (DelegateName)ar.AsyncState;   //輸出參數(shù)   int i;     //一定要EndInvoke,否則你的下場很慘   string r = dn.EndInvoke(out i, ar);   MessageBox.Show("C#異步調(diào)用完成嘍!i的值是" i.ToString() ",r的值是" r);  }    //定義與方法同簽名的委托  private delegate string DelegateName(int Num, out int Num2);    //程序入口  private void Run()  {   //實(shí)例化委托并初賦值   DelegateName dn = new DelegateName(MethodName);   //輸出參數(shù)   int i;   //實(shí)例化回調(diào)方法   //把AsyncCallback看成Delegate你就懂了,  //實(shí)際上AsyncCallback是一種特殊的Delegate,就像Event似的   AsyncCallback acb = new AsyncCallback(CallBackMethod);   //C#異步調(diào)用開始   //如果參數(shù)acb換成null則表示沒有回調(diào)方法   //***一個參數(shù)dn的地方,可以換成任意對象,  //該對象可以被回調(diào)方法從參數(shù)中獲取出來,寫成null也可以。  //參數(shù)dn相當(dāng)于該線程的ID,如果有多個C#異步調(diào)用線程,  //可以都是null,但是絕對不能一樣,不能是同一個object,否則異常   IAsyncResult iar = dn.BeginInvoke(1, out i, acb, dn);   //去做別的事   //…………  }    //***的結(jié)果應(yīng)該是:i=1,r="HelloWorld"

另外,如果可以,定義委托的時候可以選擇不用過多的修飾:

/// ﹤summary﹥  /// 定義委托  /// ﹤/summary﹥  /// ﹤returns﹥﹤/returns﹥  public delegate bool Asyncdelegate();    /// ﹤summary﹥  /// Callback method must have the same signature as the  /// AsyncCallback delegate  /// ﹤/summary﹥  /// ﹤param name="ar"﹥﹤/param﹥  private void CallbackMethod(IAsyncResult ar)  {  // Retrieve the delegate.  Asyncdelegate dlgt = (Asyncdelegate)ar.AsyncState;    // Call EndInvoke to retrieve the results.  dlgt.EndInvoke(ar);  }

其他方法中調(diào)用:

//C#異步調(diào)用執(zhí)行  //指定委托方法  Asyncdelegate isgt = new Asyncdelegate(icpInfo.Insert);  IAsyncResult ar = isgt.BeginInvoke(  new AsyncCallback(CallbackMethod), isgt);

關(guān)于C#中怎么實(shí)現(xiàn)異步調(diào)用問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。

網(wǎng)站名稱:C#中怎么實(shí)現(xiàn)異步調(diào)用
新聞來源:http://aaarwkj.com/article36/ipcosg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、微信公眾號建站公司、關(guān)鍵詞優(yōu)化、網(wǎng)站設(shè)計、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
在线看岛国毛片十八禁| 日本欧美中文字幕一区| 日韩一区二区三区四区精品| 亚洲一区二区三区日韩欧美| 日本国产精品久久一线| 天天干夜夜操操操操| 琪琪精品免费一区二区三区| 97超频在线观看免费| 亚洲免费观看视频一区二区三区| 国产亚洲欧美日韩看国产| 日韩欧美二区三区精品在线 | 91免费在线观看国产精品| 国产一区二区高清不卡| 丁香六月综合激情啪啪啪| 亚洲午夜一区二区精品 | 国产91高清在线观看| 丁香婷婷麻豆激情综合网| 国产精品呦呦国产精品尤物| 开心五月六月婷婷在线| 视频二区国产欧美日韩| 久草视频免费福利观看| 日本一道二区三区我不卡| 日韩亚洲国产欧美在线观看| 国产经典三级在线观看| 亚洲欧美一区二区粉嫩| 免费在线观看av日韩| 99国产综合精品女| 人妻乱人伦中文字幕在线| 人成午夜视频在线播放| 日韩高清在线一区二区三区| 亚洲一区二区三区 日韩精品| 在线观看91高清视频| 精品亚洲第一区二区免费在线| 91欧美激情另类亚洲| 99人妻精品一区二区| 日本午夜福利免费在线播放| 日韩欧美高清一区二区| 好吊毛片一区二区三区| 午夜福利福利一区二区| 国产精品亚洲av性色| 日本免费精品一区二区三区中 |