异步编程代码记录

 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         }
原文地址:https://www.cnblogs.com/yanglang/p/9689908.html