• C# async / await


    1. await只能出现在async修饰的方法中

    2.async不能修饰main函数

    3.async修饰的方法,用普通方式调用时表现为异步执行,配合await时将变成同步执行

    4. The return type of an async method must be void, Task or Task<T> 

     http://blogs.msdn.com/b/pfxteam/archive/2012/04/12/10293335.aspx

     

    http://msdn.microsoft.com/zh-cn/library/hh191443.aspx

          [TestMethod]
            public void AsyncWait()
            {
                System.Diagnostics.Debug.WriteLine("main threadid:" + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString());
                var t=a();
                //t.Wait();
                System.Diagnostics.Debug.WriteLine("main after a");
            }
    
            //private  int a()
            //{
            //    //System.Threading.Thread.Sleep(1000 *20 );
            //    for(int i=0;i<20;i++)
            //        System.Threading.Tasks.Task.Run(
            //            ()=>{
            //                System.Diagnostics.Debug.WriteLine("i:" + i.ToString() + " a threadid:" + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString());
            //            }
            //    );
            //    return 0;
            //}
    
            private async System.Threading.Tasks.Task<int> a()
            {
                //can't await anonymous function
                //await delegate(){
                //    return 1;
                //};
                /*=>{
                    System.Threading.Thread.Sleep(1000 * 20);
                    return 0;
                };*/
    
                for (int i = 0; i < 20; i++)
                {
                    //await System.Threading.Tasks.Task.Run(
                    //      () =>
                    //      {
                    //          System.Diagnostics.Debug.WriteLine("i:" + i.ToString() + " a threadid:" + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString());
                    //      }
                    //);
    
                    await System.Threading.Tasks.Task.Factory.StartNew(
                        () => {
                            System.Diagnostics.Debug.WriteLine("i:" + i.ToString() + " a threadid:" + System.Threading.Thread.CurrentThread.ManagedThreadId.ToString());
                        }
                        );
                }
                return 0;
            }
  • 相关阅读:
    Python之pytest 基础
    unittest和pytest的区别
    Selenium 常用定位对象元素的方法
    ORCAl存储过程
    Mysql的存储过程
    TestNG 搭建测试框架 自动化测试
    通过junit/TestNG+java 实现自动化测试
    查看APP用到的图片方法
    码农干私活的建议(转)
    Android的onCreateOptionsMenu()创建菜单Menu详解(转)
  • 原文地址:https://www.cnblogs.com/zyip/p/3534799.html
Copyright © 2020-2023  润新知