zoukankan      html  css  js  c++  java
  • C#异步Async、Task、Await

    参考http://www.cnblogs.com/jesse2013/p/async-and-await.html

    事例:

    static void Main(string[] args)
            {
                for (int i = 0; i < 4; i++)
                {
                    TestAsync();
                }
    
                Console.ReadLine();
            }
    
            static async Task TestAsync()
            {
                Console.WriteLine("Test()开始, Thread Id: {0}
    ", Thread.CurrentThread.ManagedThreadId);
                var name = GetNameAsync();   //我们这里没有用 await,所以下面的代码可以继续执行
                // 但是如果上面是 await GetNameAsync(),下面的代码就不会立即执行,输出结果就不一样了。            
                var res = await name;
                //
                Console.WriteLine("await GetName1: {0},得到结果进行其它操作", res );
                Console.WriteLine("Test()结束.
    "); 
            }
    
            static async Task<string> GetNameAsync()
            {
                // 这里还是主线程
                Console.WriteLine("GetName()开始, thread Id is: {0}", Thread.CurrentThread.ManagedThreadId);
                return await Task.Run(() =>
                {
                    Thread.Sleep(1000);
                    Console.WriteLine("'GetName' Thread Id: {0}", Thread.CurrentThread.ManagedThreadId);
                    return "Jesse";
                });
            }

    、、、、

    static async Task Test(){
        Task<string> task = Task.Run(() =>{
            Console.WriteLine("另一个线程在运行!");  // 这句话只会被执行一次
            Thread.Sleep(2000);
            return "Hello World";
        });
     
        // 这里主线程会挂起等待,直到task执行完毕我们拿到返回结果
        var result = task.GetAwaiter().GetResult(); 
        // 这里不会挂起等待,因为task已经执行完了,我们可以直接拿到结果
        var result2 = await task;    
        Console.WriteLine(str);
    }
  • 相关阅读:
    GTK+中的树状列表构件(GtkTreeView)
    [TOP]疯狂的投资
    多线程模式之MasterWorker模式
    一年读书总结
    Microsoft Visual Studio正忙解决办法
    使用vs自带的性能诊断工具
    C#中的扩展方法
    从委托、匿名方法到Lambda
    c#中的事件
    sqlserver中创建包含事务的存储过程
  • 原文地址:https://www.cnblogs.com/Jerrycjc/p/6491352.html
Copyright © 2011-2022 走看看