程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#每天進步一點--異步編程模式

C#每天進步一點--異步編程模式

編輯:C#入門知識

       

   

    class Program
    {
        private delegate int  MyDel(int a);

        public static int MyMenthod(int a)
        {
            for (int i = 0; i < 1000; i++)
            {
                a++;
            }
            return a;
        }
  
        static void Main(string[] args)
        {
            var del = new MyDel(MyMenthod);
            Console.WriteLine("Before BeginInvoke");
            IAsyncResult iar = del.BeginInvoke(5, null, null);
            Console.WriteLine("After BeginInvoke");

            Console.WriteLine("Doing stuff");

            long result = del.EndInvoke(iar);

            Console.WriteLine("結果為{0}",result);
        }
    }

 

  class Program
    {
        private delegate int  MyDel(int a);

        public static int MyMenthod(int a)
        {
            for (int i = 0; i < 1000; i++)
            {
                a++;
            }
            Thread.Sleep(3000);
            return a;
        }
  
        static void Main(string[] args)
        {
            var del = new MyDel(MyMenthod);

            IAsyncResult iar = del.BeginInvoke(5,null,null);
            Console.WriteLine("After BeginInvoke");

            while (!iar.IsCompleted)
            {
                Console.WriteLine("還沒處理完");

                Thread.Sleep(2000);
                Console.WriteLine("繼續處理其他事情");
            }
            Console.WriteLine("異步執行完成");
            long result = del.EndInvoke(iar);
            Console.WriteLine("結果為{0}",result);
        }
    }

 

   class Program
    {
        private delegate int  MyDel(int a);

        public static int MyMenthod(int a)
        {
            for (int i = 0; i < 1000; i++)
            {
                a++;
            }
            return a;
        }
        public static void CallBack(IAsyncResult iar)
        {
            AsyncResult ar = iar as AsyncResult;
            MyDel del = (MyDel)ar.AsyncDelegate;
            long r = del.EndInvoke(iar);
            Thread.Sleep(2000);
            Console.WriteLine("結果出來了,為{0}", r);
        }
        static void Main(string[] args)
        {
            var del = new MyDel(MyMenthod);

            Console.WriteLine("After BeginInvoke");
            IAsyncResult iar= del.BeginInvoke(5, CallBack, del);

            Console.WriteLine("Doing More Work In Main");
            Thread.Sleep(5000);
        }
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved