1. 程式人生 > >1.初探

1.初探

暫停 () pri return 新的 read code pan ==

1.線程需要通過委托去開啟。

 private static void Main(string[] args)
        {
            //通過委托開啟線程
            Func<int, string, int> a = Test;
            //開啟新的線程去執行a所引用的函數
            //IAsyncResult 取得當前線程狀態
            IAsyncResult ar = a.BeginInvoke(100, "maning", null, null);

            //可以認為線程是同時執行的(異步執行)
Console.WriteLine("main"); while(ar.IsCompleted == false) { Console.Write("."); Thread.Sleep(10); } int res = a.EndInvoke(ar); Console.WriteLine(res);

       bool isEnd = ar.AsyncWaitHandle.WaitOne(1000);//等待1000毫秒,1000毫秒結束,返回true,沒結束返回false
if(isEnd)
{
int res = a.EndInvoke(ar);
Console.WriteLine(res);
}
Console.ReadKey(); Console.ReadKey(); }
private static int Test(int i, string name) { Console.WriteLine("Test" + i + " " + name); //當前線程暫停100ms Thread.Sleep(100); return 100; }
IAsyncResult ar = a.BeginInvoke(100, "maning", null, null);
ar儲存當前線程運行狀態


int res = a.EndInvoke(ar);
res 取得當前線程運行結果。

Thread.Sleep(100)當前線程暫停100ms
ar.AsyncWaitHandle.WaitOne(1000)

等待1000毫秒,1000毫秒結束,返回true,沒結束返回false,只會等待1000ms。如果執行700ms,等待700ms,若超過1000ms,只會等待1000ms。
 

1.初探