日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

使用C#委托來實(shí)現(xiàn)異步編程

admin
2021年3月3日 16:48 本文熱度 3344

什么是異步編程?

異步編程指的就是不用阻塞當(dāng)前線程來等待任務(wù)的完成,而是將任務(wù)扔到線程池中去執(zhí)行,當(dāng)前線程可以繼續(xù)向下執(zhí)行,直至其它線程將任務(wù)完成,并回調(diào)通知當(dāng)前線程。

整個(gè)任務(wù)從開始到結(jié)束都是異步完成的,不會阻塞當(dāng)前線程。因此,異步編程很重要的一點(diǎn)就是,不會阻塞當(dāng)前線程。

異步編程實(shí)現(xiàn)

 在C#語言中,通過委托可以很方便地實(shí)現(xiàn)異步編程,在委托類型中定義了兩個(gè)方法BeginInvoke()和EndInvoke()

///<summary>

///開始執(zhí)行異步操作

///</summary>

///<param name="param">委托方法的參數(shù)</param>

///<param name="callback"></param>

///<param name="object"></param>

///<returns></returns>

IAsyncResult BeginInvoke(int param,AsyncCallback callback,Object  

@object);

///<summary>

///結(jié)束執(zhí)行異步操作,并且返回異步操作結(jié)果

///</summary>

///<returns>委托方法的返回類型</returns>

string EndInvoke(IAsyncResult result);


下面就通過一段代碼來具體實(shí)現(xiàn)異步編程:

///<summary>

///定義一個(gè)委托類型

///</summary>

public delegate int AddDel(int x,int y);

///<summary>

///任務(wù)類

///</summary>

public class TaskClass

{

   //計(jì)算任務(wù)

  public static int AddTask(int x,int y)

   {

         Console.WriteLine("異步線程(ThreadId={0})開始執(zhí)行計(jì)算任務(wù).\n",Thread.CurrentThread.ManagedThreadId);

         Console.WriteLine("異步線程(ThreadId={0})計(jì)算中...\n",Thread.CurrentThread.ManagedThreadId);

          Thread.Sleep(3000);

           int result=x+y;

           Console.WriteLine("異步線程(ThreadId={0})結(jié)束執(zhí)行計(jì)算任務(wù).\n",Thread.CurrentThread.ManagedThreadId);

            return result;

}

}

///<summary>

///實(shí)現(xiàn)異步編程,主線程不會阻塞

///</summary>

public class AsynCallbackClass

{

    public static int result;

   public static void Main(string[] args)

     {

          Console.WriteLine("主線程(ThreadId={0})開始執(zhí)行.\n",Thread.CurrentThread.ManagedThreadId);

          AddDel addDel=new AddDel(TaskClass.AddTask);

          int x=123457,y=48759;

          Console.WriteLine("主線程(ThreadId={0})調(diào)用BeginInvoke()方法開始執(zhí)行異步操作.\n",

           Thread.CurrentThread.ManagedThreadId);

        //開始執(zhí)行異步操作,Callback為定義的回調(diào)方法

addDel.BeginInvoke(x,y,Callback,null);

         Console.WriteLine("主線程(ThreadId={0})繼續(xù)執(zhí)行...\n",Thread.CurrentThread.ManagedThreadId);

         Thread.Sleep(5000);

//輸出計(jì)算任務(wù)返回的結(jié)果

         Console.WriteLine("計(jì)算結(jié)果:{0}+{1}={2}.\n",x,y,result);

          Console.WriteLine("主線程(ThreadId={0})執(zhí)行結(jié)束.\n",Thread.CurrentThread.ManagedThreadId);

  }

         ///<summary>

         ///回調(diào)方法

          ///</summary>

         ///<param name="ar"></param>

         public static void Callback(IAsyncResult ar)

         {

                AsyncResult asyncResult=ar as AsyncResult;

             if(asyncResult ==null){

                return;}

               AddDel addDel=asyncResult.AsyncDelegate as AddDel;

              if(addDel==null){return;}

            Console.WriteLine("回調(diào)方法中調(diào)用EndInvoke()方法結(jié)束執(zhí)行異步操作,獲取計(jì)算任務(wù)結(jié)果.\n",Thread.CurrentThread.ManagedThreadId);

 //結(jié)束執(zhí)行異步操作,并返回計(jì)算任務(wù)結(jié)果

result=addDel.EndInvoke(ar);

}

}


運(yùn)行結(jié)果:


從運(yùn)行結(jié)果中,我們可以發(fā)現(xiàn)主線程在調(diào)用了BeginInvoke()方法后,沒有阻塞,而是繼續(xù)向下執(zhí)行,而且任務(wù)也確實(shí)由一個(gè)新的線程來執(zhí)行,任務(wù)執(zhí)行結(jié)束后,調(diào)用回調(diào)方法,在回調(diào)方法中調(diào)用EndInvoke()方法來獲取任務(wù)執(zhí)行結(jié)果。

總結(jié)

1. 在異步編程中,當(dāng)前線程是不會被阻塞的。

2. C#的委托機(jī)制可以很方便地實(shí)現(xiàn)異步編程。


該文章在 2021/3/3 16:48:44 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

日韩五月天久久九九视频| 日本无码一码二码三码区| 日本午夜成人网站| 【天美传媒】国产原创Av| 人人操人人爽蜜臀| 久久精品日韩无毛| 国产精品大香蕉永久久久久久久| 靖远县| 久久精品草台班子歌舞团裸体走秀| 外国美女性精品久久| 色爰爰爰色爰色色色爰色网 | 中文字幕永久人妻| 男人AT天堂| 久久性爱视频播放| 动图亚洲日韩在线一区| 五月天激情国产综合伦理| 国产精品 欧美二区| 豆一区二区视频| 国产免费麻豆FC2| 久久在线看Av| 黄色9696视频播放| 老熟人亚洲天堂| 国产精品白色| 国产久久久久久久KTK| 日本一区二区三区成人学校| 国产淫家庭| 久久精品porn| 美女,视频,操逼| 美女洗澡尿尿久久久久久国产| 91精品九九| 美女18禁91网站| 精品二区不卡在线观看| 国产免费午夜复利在线观看| 99黄色在线| 亚洲熟妇丰满多毛XXXX| 伊人婷婷综合缴情亚洲五月| 欧美肛交另类在线播放| 亚洲精品一区二区三区69AV| 国产精品人妻欲求不满| 精品国产无码中出| 国产精品熟女另类|