1. 程式人生 > >異步編程代碼記錄

異步編程代碼記錄

eat 所有 一次 true 請求 sleep work .get for

 1                         #region 每個思考時間完成以後發送指定的數據量,不管服務器是否處理完
 2 
 3                         for (int i = 0; i < _threadNumber; i++)
 4                         {
 5                             Task.Factory.StartNew(new Action<object>(t =>
 6                             {
 7                                 PrintLog($@"
ThreadId:{Thread.CurrentThread.ManagedThreadId},Starting Process {i}"); 8 Do((int)t); 9 }), i); 10 } 11 12 #endregion 13 14 #region 發送N次請求以後等待所有線程完成,等服務器處理完所有的請求後,再執行下一次發送 15
//var tasks = new List<Task<Tuple<int, bool>>>(); 16 //for (int i = 0; i < _threadNumber; i++) 17 //{ 18 // PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},Starting Process {i}");
19 // tasks.Add(DoAsync(i)); 20 //} 21 22 //foreach (var task in Task.WhenAll(tasks).GetAwaiter().GetResult()) 23 //{ 24 // if (task.Item2) 25 // { 26 // PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},Ending Process {task.Item1}:{task.Item2}"); 27 // } 28 //} 29 #endregion
 1         public void Do(int i)
 2         {
 3             PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},working..{i}");
 4             Thread.Sleep(1000);
 5             PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},worked..{i}");
 6         }
 7 
 8 
 9         public async Task<Tuple<int, bool>> DoAsync(int i)
10         {
11             PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},working..{i}");
12             await Task.Delay(3000);
13             PrintLog($@"ThreadId:{Thread.CurrentThread.ManagedThreadId},worked..{i}");
14             return Tuple.Create(i, true);
15         }

異步編程代碼記錄