class Program { class TestEnqueue { static Queue<string> str = new Queue<string>(); public static void AddEnqueue() { for (int i = 0; i < 10; i++) { string s= i.ToString(); Console.WriteLine("Task1 now runing"); str.Enqueue(s); } } public static void DelEnqueue() { for (int i = 0; i < 10; i++) { // string s = i.ToString(); string s= str.Dequeue(); Console.WriteLine("Task2 now runing::::"+ s); } } } static void Main(string[] args) { Task t1 = new Task(TestEnqueue.AddEnqueue); t1.Start(); Task t2 = new Task(TestEnqueue.DelEnqueue); t2.Start(); Console.ReadKey(); } } }
t2在隊列為空的時候報錯。
有報錯時候是這樣
好像還是沒法測出兩個task同時一個在寫,然后一個在讀。幾乎同時運行的效果。
另外程序報錯之后出錯地str 實際是10個數的,為何有數還報錯,可能是報錯延緩吧,t2報錯時,t1還在往里寫數據,等錯顯示出來之后,t1運行完了。不知能否這么理解
加一行代碼
Task t2 = new Task(TestEnqueue.DelEnqueue);
t1.Start();
t2.Wait();
t2.Start();
啟動 Task() 時效
Stopwatch sw = new Stopwatch();
sw.Start();
Task t = new Task(MakeResult);
t.Start();
sw.Stop();
Debug.WriteLine(" 觸發時間ms:"+sw.Elapsed.TotalMilliseconds); ;
第一次啟動20毫秒。第二次開始變低