zoukankan      html  css  js  c++  java
  • WhenAll 与 WaitAll 的区别

         #region   async    Task    await
            /// <summary>
            /// commit
            /// </summary>
            /// <param name="mallCode">code</param>
            /// <returns>json</returns>
            [HttpGet]
            public async Task<ResultDataModel<JObject>> TaskTest(string mallCode)
            {
    
    
                var gameQQ = GameQQ(1, 2);
                var gameWX = GameWX(1, 2);
                var gameLOL = GameLOL(1, 2);
    
                var breakfastTasks = new List<Task> { gameQQ, gameWX, gameLOL };
                //while (breakfastTasks.Count > 0)
                //{
                //    Task finishedTask = await Task.WhenAny(breakfastTasks);//任何提供的任务已完成时,创建将完成的任务。  WhenAll
                //    if (finishedTask == gameQQ)
                //    {
                //        System.Diagnostics.Debug.WriteLine("gameQQ 开完");
                //    }
                //    else if (finishedTask == gameWX)
                //    {
                //       System.Diagnostics.Debug.WriteLine("GameWX 发完");
                //    }
                //    else if (finishedTask == gameLOL)
                //    {
                //       System.Diagnostics.Debug.WriteLine("GameLOL 打完");
                //    }
                //    breakfastTasks.Remove(finishedTask);
                //}
    
    
    
    
                //主线程(当前请求)等和不等的区别  ,返回值为Task
                //Task.WhenAll(breakfastTasks);
                //await Task.WhenAll(breakfastTasks);
    
    
                Task.WaitAll(breakfastTasks.ToArray()); //与 WhenAll 相比,返回值为void 。和写了  await 的WhenAll 没有区别
                int asd = 0;//其他代码
    
                return StateMessage.GetSuccess("1000", "",  new JObject());
    
            }
    
            private async Task<int> GameQQ(int password,int account)
            {
                await Task.Delay(3000);
               System.Diagnostics.Debug.WriteLine("GameQQ");
                return 0;
            }
            private async Task<int> GameWX(int password, int account)
            {
                await Task.Delay(1000);
               System.Diagnostics.Debug.WriteLine("GameWX");
                return 1;
            }
    
    
            private async Task<int> GameLOL(int password, int account)
            {
                await Task.Delay(500);
               System.Diagnostics.Debug.WriteLine("GameLOL");
                return 2;
            }
    
    
            #endregion
    

      WaitAll  为 void ,WhenAll 为 task。 用法无区别

  • 相关阅读:
    网站添加手机短信功能
    FileWriter的正确使用,请及时关闭流
    myeclipse9.0没有提示
    Integer.getInteger,are you kinding me? 好吧, 我还是没怎么弄明白,求高人解答。。。
    构造方法充当临时对象&Calendar的使用
    关于Spring IOC的一点个人理解
    在JAVA中使用GUID
    动态生成table下的<tr>标签不显示
    MD5加密实例
    String,StringBuffer 和 StringBuilder 的区别
  • 原文地址:https://www.cnblogs.com/j2ee-web-01/p/13743858.html
Copyright © 2011-2022 走看看