C#异步中的Task,async,await
2017-11-22 11:18
916 查看
class Program { static void Main(string[] args) { Console.WriteLine("我是主线程,线程ID:{0}", Thread.CurrentThread.ManagedThreadId); TestAsync(); Console.ReadLine(); } static async void TestAsync() { Console.WriteLine("调用GetReturnResult()之前,线程ID:{0}。当前时间:{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss")); var name = GetReturnResult(); Console.WriteLine("调用GetReturnResult()之后,线程ID:{0}。当前时间:{1}", Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss")); //异步回调内容 //在await以及之后的代码都会阻塞 Console.WriteLine("得到GetReturnResult()方法的结果:{0}。当前时间:{1}", await name, DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss")); Console.WriteLine("await之后的内容。当前时间:{0}", DateTime.Now.ToString("yyyy-MM-dd hh:MM:ss")); //异步回调内容 } static async Task<string> GetReturnResult() { Console.WriteLine("执行Task.Run之前, 线程ID:{0}", Thread.CurrentThread.ManagedThreadId); return await Task.Run(() => { Thread.Sleep(5000); Console.WriteLine("GetReturnResult()方法里面线程ID: {0}", Thread.CurrentThread.ManagedThreadId); return "我是返回值"; }); } }
相关文章推荐
- C#异步Async、Task、Await
- C#异步 Thread、Task、Async/Await、IAsyncResult
- C# 异步操作 async await 的用法
- C# Async/await 异步多线程编程
- 我也来说说C#中的异步:async/await
- .NET(C#):await返回Task的async方法
- .NET 基于任务的异步模式(Task-based Asynchronous Pattern,TAP) async await
- C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!
- 异步方法的意义何在,Async和await以及Task的爱恨情仇,还有多线程那一家子。
- C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!
- C# 异步操作 async await
- C# Async await和Task的关系
- .NET(C#):await返回Task的async方法
- C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!
- C# Task中的Func, Action, Async与Await的使用
- 【C#复习总结】 Async 和 Await 的异步编程
- C# 异步调用之async及await关键字
- Asp.net Core 异步调用 Task await async 的梳理
- C# 中 async/await 调用传统 Begin/End 异步方法
- C#中的异步:async和await