C#异步Async、Task、Await
2017-03-02 16:39
1091 查看
参考https://www.geek-share.com/detail/2604201440.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}\r\n", Thread.CurrentThread.ManagedThreadId); var name = GetNameAsync(); //我们这里没有用 await,所以下面的代码可以继续执行 // 但是如果上面是 await GetNameAsync(),下面的代码就不会立即执行,输出结果就不一样了。
var res = await name; // Console.WriteLine("await GetName1: {0},得到结果进行其它操作", res ); Console.WriteLine("Test()结束.\r\n");
} 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); }
相关文章推荐
- C#异步 Thread、Task、Async/Await、IAsyncResult
- C#异步中的Task,async,await
- [C#] .NET4.0中使用4.5中的 async/await 功能实现异步
- C# Task中的Func, Action, Async与Await的使用
- C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!
- C# Task中的Func, Action, Async与Await的使用
- C#异步编程async await
- C# 中 async/await 调用传统 Begin/End 异步方法
- 异步方法的意义何在,Async和await以及Task的爱恨情仇,还有多线程那一家子。
- 详解C#中 Thread,Task,Async/Await,IAsyncResult的那些事儿
- C# 异步操作 async await 的用法
- C# 异步编程4 async与await 异步程序开发
- C# Async await和Task的关系
- async/await 异步操作 .net csharp C#
- C#中的异步:async和await
- [C#] .NET4.0中使用4.5中的 async/await 功能实现异步
- C# Async/await 异步多线程编程
- .NET 基于任务的异步模式(Task-based Asynchronous Pattern,TAP) async await
- C# 异步操作 async await
- 请教 C# 异步 async await 问题