C#中委託

來源:互聯網
上載者:User

標籤:

    class Program    {        /*       *這是需要非同步執行的方法,COPY一個檔案        */        public void CopyFile(String fileName, out bool result)        {            Console.WriteLine("Move file " + fileName + "...");            for (int i = 0; i < 10; i++)            {                Thread.Sleep(200);                Console.WriteLine("Move file is running..." + i);            }            Console.WriteLine("Move file finished");            result = true;        }        /*       *定義COPY檔案的委託,將來CopyFile方法就委託給它去非同步執行       */        public delegate void CopyFileDelegate(String fileName, out bool result);        static void Main(string[] args)        {            bool result;            Program aa = new Program();            // 開始委託方法,以後都由copyFile這個變數來做事            CopyFileDelegate copyFile = new CopyFileDelegate(aa.CopyFile);            Console.WriteLine("[Main] Invoking the asynchronous " + " Copy file method");            //委託調用非同步方法呼叫去執行            IAsyncResult iAR = copyFile.BeginInvoke("songlin.txt", out result, null, null);            // 主方法不用等待COPY FILE方法,繼續自己的事情            Console.WriteLine("[Main] Doing other work");            for (int i = 0; i < 10; i++)            {                Thread.Sleep(200);                Console.WriteLine("[Main]MainMethod is running..." + i);            }            Console.WriteLine(" [Main] Waiting for file transformation to finish");            /* 主方法自己的事情做完,開始檢查COPYFILE有沒有完成。             * 使用它的 WaitOne 方法將執行一直等到發出 WaitHandle 訊號,然後調用 EndInvoke。             * 注意:非同步呼叫完成時會發出 WaitHandle 訊號,可以通過WaitOne 來等待它*/            iAR.AsyncWaitHandle.WaitOne();            Console.WriteLine("[Main] Copy file finished, cleaning up");            /* EndInvoke 方法用於檢索非同步呼叫結果。調用 BeginInvoke 後可隨時調用 EndInvoke 方法;             * 如果非同步呼叫未完成,EndInvoke 將一直阻塞到非同步呼叫完成。             */            copyFile.EndInvoke(out result, iAR);            Console.WriteLine("[Main] The result is {0}", result);            Console.ReadLine();        }    }

 

C#中委託

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.