博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Task async await
阅读量:4326 次
发布时间:2019-06-06

本文共 1969 字,大约阅读时间需要 6 分钟。

暇之余,究多Task、async、await。

using System;using System.Collections.Generic;using System.Linq;using System.Linq.Expressions;using System.Text;using System.Threading;using System.Threading.Tasks;namespace ConsoleApp2{    class Program    {        static void Main(string[] args)        {            for (int i = 0; i < 5; i++)            {                Task.Run(() => Run2()); //类似于线程池,开启线程小于5            }            for (int i = 0; i < 5; i++)            {                new Thread(Run1).Start();//开启5个线程            }            Task
task = Task.Run( () => Thread.CurrentThread.ManagedThreadId + "" ); Console.WriteLine(task.Result);//task.Result 会等到task执行完毕执行 Console.WriteLine("-------主线程启动-------"); Task
task2 = GetStrLengthAsync(); Console.WriteLine("主线程继续执行"); Console.WriteLine("Task返回的值" + task2.Result); Console.WriteLine("-------主线程结束-------"); } static void Run1() { Console.WriteLine("Thread Id =" + Thread.CurrentThread.ManagedThreadId); } static void Run2() { Console.WriteLine("Task调用的Thread Id =" + Thread.CurrentThread.ManagedThreadId); } //async必须返回void Task Task
static async Task
GetStrLengthAsync() { Console.WriteLine("GetStrLengthAsync方法开始执行"); //await 必须用来修饰Task Task
,而且只能出现在async修饰的异步方法中。 //遇到await并未开启新线程,而是遇到GetString方法中的Task.Run()时才开启了新线程 string str = await GetString(); Console.WriteLine("GetStrLengthAsync方法结束执行"); return str.Length; } static Task
GetString() { Console.WriteLine("GetString方法开始执行"); return Task.Run(() => { Thread.Sleep(2000); return "GetString返回值"; }); } }}

 

转载于:https://www.cnblogs.com/chenyishi/p/8333930.html

你可能感兴趣的文章
阶段3 3.SpringMVC·_05.文件上传_1 文件上传之上传原理分析和搭建环境
查看>>
阶段3 3.SpringMVC·_05.文件上传_4 文件上传之Springmvc方式上传代码
查看>>
阶段3 3.SpringMVC·_05.文件上传_3 文件上传之Springmvc方式上传原理分析
查看>>
阶段3 3.SpringMVC·_05.文件上传_6 文件上传之跨服务器上传代码
查看>>
阶段3 3.SpringMVC·_05.文件上传_5 文件上传之跨服务器上传分析和搭建环境
查看>>
阶段3 3.SpringMVC·_06.异常处理及拦截器_1 SpringMVC异常处理之分析和搭建环境
查看>>
阶段3 3.SpringMVC·_06.异常处理及拦截器_4 SpringMVC拦截器之介绍和搭建环境
查看>>
阶段3 3.SpringMVC·_06.异常处理及拦截器_6 SpringMVC拦截器之拦截器入门代码
查看>>
阶段3 3.SpringMVC·_06.异常处理及拦截器_2 SpringMVC异常处理之演示程序异常
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_01.ssm整合说明
查看>>
阶段3 3.SpringMVC·_06.异常处理及拦截器_3 SpringMVC异常处理之异常处理代码编写
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_03ssm整合之编写Spring框架
查看>>
阶段3 3.SpringMVC·_06.异常处理及拦截器_5 SpringMVC拦截器之编写controller
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_05.ssm整合之Spring整合SpringMVC的框架
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_06.ssm整合之编写MyBatis框架
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_07.ssm整合之编写MyBatis框架测试保存的方法
查看>>
阶段3 3.SpringMVC·_06.异常处理及拦截器_7 SpringMVC拦截器之拦截器接口方法演示
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_09.ssm整合之Spring整合MyBatis框架配置事务
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_02.ssm整合之搭建环境
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_3、快速创建SpringBoot应用之手工创建web应用...
查看>>