91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#異步回調函數

發布時間:2020-07-23 20:15:14 來源:網絡 閱讀:1712 作者:Aonaufly 欄目:編程語言


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace ComprehensiveTest.com
{
    public class AsyCallEx112
    {
        // 定義一個執行加法的委托
        public delegate int sum(int a, int b);
        public class number
        {
            public int m = 4;
            public int numberAdd(int a, int b)
            {
                int c = a + b;
                return c;
            }
            //定義一個與。net framework 定義的asyncCallback委托相對應的回調函數
            public void CallbackMothed2(IAsyncResult ar2)
            {

                //numberadd.BeginInvoke(21, 12, numberBack, numberadd);              //第三個參數為回調  

                sum s = (sum)ar2.AsyncState;//獲得BeginInvoke第4個參數
                int number = s.EndInvoke(ar2);//獲取運算的結果
                m = number;
                Console.WriteLine("得到的M值:{0}", m);
            }
        }
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace ComprehensiveTest.com
{
    public class AsyCallEx113
    {
        //定義一個委托
        public delegate void AsyncEventHanlder();
        public class Class1
        {
            public void Event1()
            {
                Console.WriteLine("Event1 start");
                System.Threading.Thread.Sleep(2000);
                Console.WriteLine("Event1 end");
            }
            public void Event2()
            {
                Console.WriteLine("Event2 start");
                int i = 1;
                while (i < 100)
                {
                    i = i + 1;
                    Console.WriteLine("Event2 " + i.ToString());
                }
                Console.WriteLine("Event2 end");
            }
            public void CallbackMethod( IAsyncResult ar )
            {
                ((AsyncEventHanlder)ar.AsyncState).EndInvoke(ar);
            }
        }
    }
}



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ComprehensiveTest.com;


namespace ComprehensiveTest
{
    class Program
    {
        static void Main(string[] args)
        {
            // 112
            //AsyCallEx112.number num = new AsyCallEx112.number();
            //AsyCallEx112.sum numberadd= new AsyCallEx112.sum(num.numberAdd);
            //AsyncCallback numberBack = new AsyncCallback(num.CallbackMothed2);
            //numberadd.BeginInvoke(21, 12, numberBack, numberadd);
            //Console.WriteLine("得到的結果:");
            //Console.WriteLine(num.m);


            // 113
            long start = 0;
            long end = 0;
            AsyCallEx113.Class1 c = new AsyCallEx113.Class1();
            Console.WriteLine("ready");
            start = DateTime.Now.Ticks;


            AsyCallEx113.AsyncEventHanlder asy = new AsyCallEx113.AsyncEventHanlder(c.Event1);
            //IAsyncResult ia = asy.BeginInvoke(null, null);


            IAsyncResult ia  = asy.BeginInvoke(new AsyncCallback(c.CallbackMethod), asy);
            ia.AsyncWaitHandle.WaitOne();     //對c.Event1產生阻塞,既是等Event1全部執行完畢以后再往后面執行代碼(!important)
            c.Event2();
           
            end = DateTime.Now.Ticks;
            Console.WriteLine("時間刻度差= " + Convert.ToString(end - start));
            Console.ReadLine();
        }
    }
}


不知道是什么原因 , 有的時候 , 沒法打中文 , 在這個編輯器里面 . 不過現在又好了,,,C#異步回調函數

廢話少說 , 進入正題了

1 , 這個異步調用( CallBack )  于 傳統的callback的區別 , 就是1個在于異步 , 一個在于同步.當然C#異步調用有方法是其變為同步調用 . 如果讀者現在不明白何為同步 , 何為異步 , 請找度娘 ......

過程如下 :

        ①:BeginInvoke方法啟動異步調用 , 委托實例的方法 , 參數( n個回調參數 , 實例AsyncCallback , 委托實例本身 ) . 其中 : 關于AsyncCallback 的參數是有IAsyncResult的Function  

        ②:EndInvoke檢索異步調用的結果 , 就是得到委托運算的結果


使用WaitHandle等待異步調用

 就是產生與傳統Callback一樣的效果 , 即產生阻塞 , 等待異步調用全部完成 , 進行下面的運行

    由BeginInvoke 產生的IAsyncResult     ( IAsynResult.AsyncWaitHandle.WaitOne() )


請 , 參照上面的代碼 , 學習!!! 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贵南县| 商洛市| 白水县| 探索| 凤庆县| 龙门县| 绥棱县| 高碑店市| 涿州市| 汶川县| 胶州市| 剑河县| 搜索| 霸州市| 肇源县| 义马市| 澳门| 增城市| 山丹县| 兰西县| 嘉荫县| 镶黄旗| 建昌县| 沧州市| 土默特左旗| 阳曲县| 黄大仙区| 庆阳市| 仁寿县| 邵武市| 二连浩特市| 化隆| 中牟县| 寿阳县| 延安市| 霍邱县| 湟中县| 闵行区| 湖北省| 宝兴县| 泽普县|