当前位置: 首页 > news >正文

免费网站生成软件推广普通话内容100字

免费网站生成软件,推广普通话内容100字,有哪些好的响应式网站有哪些,自己搞网站做外贸文章目录 前言Task返回值无参返回有参返回 async和await返回值await搭配使用Main async改造 Task进阶Task线程取消测试用例超时设置 线程暂停和继续测试用例 多任务等最快多任务全等待 结论 前言 Task是对于Thread的封装,是极其优化的设计,更加方便了我…

文章目录

  • 前言
  • Task
    • 返回值
      • 无参返回
      • 有参返回
    • async和await
      • 返回值
      • await搭配使用
      • Main async改造
    • Task进阶
      • Task线程取消
        • 测试用例
        • 超时设置
      • 线程暂停和继续
        • 测试用例
      • 多任务等最快
      • 多任务全等待
  • 结论

前言

Task是对于Thread的封装,是极其优化的设计,更加方便了我们如何操控线程

Task

Task声明形如:

public static  Task Sleep()
{}

Task是一种类型

返回值

直接声明Task是需要返回值的。
在这里插入图片描述

无参返回

public static  Task Sleep(int second)
{return Task.CompletedTask;
}

有参返回

 public static  Task<T> Sleep(){return Task.FromResult(T);}
//举例,返回参数只能唯一,除非使用元祖public static  Task<string> Sleep(){return Task.FromResult("Hello world!");}

使用Task.Result获取返回值


var res = Sleep().Result;

async和await

async和await是对于异步事件的控制,方便我们对异步事件的操控。

返回值

使用async之后可以直接设置返回值

///有参返回public static async  Task<string> Sleep(){return "Hello world";}///无参返回public static async  Task Sleep(){}

await搭配使用

异步事件的等待使用await方法

        public static async Task Sleep(int second){await Task.Delay(second * 1000);Console.WriteLine($"等待{second}s");}static void Main(string[] args){Sleep(3);Sleep(2);Sleep(1);Console.WriteLine("运行完毕");//使用键盘键入事件阻塞主进程,主进程结束程序会立即退出Console.ReadKey();}

打印结果:
在这里插入图片描述

打印结果显示:

  • 同步事件先结束
  • 异步事件互相不阻塞,3,2,1同时开始,等待3,2,1s打印1,2,3。

Main async改造

主程序是Void,无法等待

在这里插入图片描述
将Void改成Task,即可等待异步事件
在这里插入图片描述
打印结果服务预期,等待异步事件结束后运行
在这里插入图片描述

Task进阶

C#Task取消任务执行CancellationTokenSource
C# Task 暂停与取消

Task线程取消

以前Thread有Abort()方法,强行销毁线程,但是这个方法用于极大的安全问题,已经被弃用。

在这里插入图片描述
线程不能直接被销毁,只能通过抛出异常来取消线程。

//声明token
var tokenSource = new CancellationTokenSource();
//注册异常抛出
tokenSource.Token.ThrowIfCancellationRequested();
//注册取消事件回调
tokenSource.Token.Register(() =>
{Console.WriteLine("线程已被取消");
});。。。。。。别的地方的代码
//取消token,那么之前写ThrowIfCancellationRequested的地方会直接结束
tokenSource.Cancel();
测试用例

一个简单的死循环函数,运行时返回token,用于直接跳出程序

static async Task Main(string[] args)
{var token = Loop();//等待3s抛出异常await Task.Delay(1000 * 3);Console.WriteLine("任务完成!");token.Cancel();Console.ReadKey();}/// <summary>
/// 循环等待
/// </summary>
/// <returns></returns>
public static CancellationTokenSource Loop()
{var tokenSource = new CancellationTokenSource();Console.WriteLine("任务开始!");tokenSource.Token.Register(() =>{Console.WriteLine("线程已被取消");});var count = 0;Task.Run(async () =>{while (true){await Task.Delay(1000);//抛出异常,直接结束线程tokenSource.Token.ThrowIfCancellationRequested();count++;Console.WriteLine(count);}});return tokenSource;
}

打印结果

在这里插入图片描述

这样使用起来也更加安全。

超时设置

tokenSource.CancelAfter是超时方法。
CancelAfter(1000):1000毫秒后超时

 static async Task Main(string[] args){var token = Loop();///3000毫秒后取消token.CancelAfter(1000*3);Console.ReadKey();}/// <summary>/// 循环等待/// </summary>/// <returns></returns>public static CancellationTokenSource Loop(){var tokenSource = new CancellationTokenSource();Console.WriteLine("任务开始!");tokenSource.Token.Register(() =>{Console.WriteLine("线程已被取消");});var count = 0;Task.Run(async () =>{while (true){await Task.Delay(1000);tokenSource.Token.ThrowIfCancellationRequested();count++;Console.WriteLine(count);}});return tokenSource;}

线程暂停和继续

线程暂停也是使用一个类去控制,ManualResetEvent。和线程销毁一样,是不能直接暂停的,因为直接暂停也不安全。

//声明,false为默认阻塞,true为不阻塞
var resetEvent = new ManualResetEvent(false);
//暂停,通过WaitOne方法来阻塞线程,通过Set和Reset来设置是否阻塞
resetEvent.WaitOne();
//阻塞暂停
resetEvent.Set()
//取消阻塞,继续
resetEvent.Reset()
测试用例
  static async Task Main(string[] args){var canStop = CanStop();//等待3s抛出异常Console.WriteLine("等待3s启动");await Task.Delay(1000 * 3);Console.WriteLine("启动!");canStop.Set();Console.WriteLine("等待3s暂停");await Task.Delay(3000);Console.WriteLine("暂停!");canStop.Reset();Console.ReadKey();}public static ManualResetEvent CanStop(){var resetEvent = new ManualResetEvent(false);var count = 0;Task.Run(async () =>{while (true){resetEvent.WaitOne();await Task.Delay(1000);count++;Console.WriteLine(count);}});return resetEvent;}

多任务等最快

await Task.WhenAny(Task1,Task2,Task3)
只会等待最快的一个。

        static async Task Main(string[] args){await Task.WhenAny(Sleep(1),Sleep(2),Sleep(3));Console.WriteLine("运行结束");Console.ReadKey();}public async static Task Sleep(int second){await Task.Delay(second*1000);Console.WriteLine($"等待{second}s");}

运行结果

在这里插入图片描述

多任务全等待

        static async Task Main(string[] args){await Task.WhenAll(Sleep(1), Sleep(2), Sleep(3));Console.WriteLine("运行结束");Console.ReadKey();}public async static Task Sleep(int second){await Task.Delay(second*1000);Console.WriteLine($"等待{second}s");}

在这里插入图片描述

结论

异步线程的控制是极其重要的内容,Task还可以和委托一起使用,对程序的运行有更强的把控力。


文章转载自:
http://dinncocomplementary.stkw.cn
http://dinncobusload.stkw.cn
http://dinncositzkrleg.stkw.cn
http://dinnconightingale.stkw.cn
http://dinncogoal.stkw.cn
http://dinncostruck.stkw.cn
http://dinncotour.stkw.cn
http://dinncogym.stkw.cn
http://dinncowhereto.stkw.cn
http://dinncojimjams.stkw.cn
http://dinncoperfumer.stkw.cn
http://dinncotomb.stkw.cn
http://dinncoerosion.stkw.cn
http://dinncoalack.stkw.cn
http://dinncovum.stkw.cn
http://dinncovocalic.stkw.cn
http://dinncorepublicanism.stkw.cn
http://dinncosporangiospore.stkw.cn
http://dinncoarchiepiscopate.stkw.cn
http://dinncocounterpunch.stkw.cn
http://dinncoreassess.stkw.cn
http://dinncoboatswain.stkw.cn
http://dinncogoldleaf.stkw.cn
http://dinncocubane.stkw.cn
http://dinncosialid.stkw.cn
http://dinncoswati.stkw.cn
http://dinncogazania.stkw.cn
http://dinncourinose.stkw.cn
http://dinncoestablishment.stkw.cn
http://dinncoconfidently.stkw.cn
http://dinncoinexistence.stkw.cn
http://dinncobarostat.stkw.cn
http://dinncomoonraking.stkw.cn
http://dinncopanhellenism.stkw.cn
http://dinncothunderation.stkw.cn
http://dinncocynosure.stkw.cn
http://dinncoamundsen.stkw.cn
http://dinncofoolproof.stkw.cn
http://dinncorageful.stkw.cn
http://dinnconasality.stkw.cn
http://dinncotoo.stkw.cn
http://dinncowarragal.stkw.cn
http://dinncospit.stkw.cn
http://dinncokinematograph.stkw.cn
http://dinncobifolium.stkw.cn
http://dinncovolitient.stkw.cn
http://dinncozooplankton.stkw.cn
http://dinncoavuncular.stkw.cn
http://dinncoflytrap.stkw.cn
http://dinncotang.stkw.cn
http://dinncoeffervescence.stkw.cn
http://dinncoillegibly.stkw.cn
http://dinncopiddle.stkw.cn
http://dinncosolubilize.stkw.cn
http://dinncomultiangular.stkw.cn
http://dinncooverhand.stkw.cn
http://dinncomounted.stkw.cn
http://dinncoshirt.stkw.cn
http://dinncostraitjacket.stkw.cn
http://dinncosputnik.stkw.cn
http://dinncolipstick.stkw.cn
http://dinncoruffianly.stkw.cn
http://dinncocheerless.stkw.cn
http://dinncosevenfold.stkw.cn
http://dinncotextual.stkw.cn
http://dinncotonto.stkw.cn
http://dinncomuniment.stkw.cn
http://dinncobotulism.stkw.cn
http://dinncodraw.stkw.cn
http://dinncohungary.stkw.cn
http://dinncoencincture.stkw.cn
http://dinncodisdainfulness.stkw.cn
http://dinncosubserve.stkw.cn
http://dinncofaintingly.stkw.cn
http://dinncopreemployment.stkw.cn
http://dinncoaudience.stkw.cn
http://dinnconeuridine.stkw.cn
http://dinncosuccessivity.stkw.cn
http://dinnconamesmanship.stkw.cn
http://dinncomarine.stkw.cn
http://dinncoearn.stkw.cn
http://dinncolitholapaxy.stkw.cn
http://dinncoskinny.stkw.cn
http://dinncodrumroll.stkw.cn
http://dinncopredominate.stkw.cn
http://dinncokingstown.stkw.cn
http://dinncomoorish.stkw.cn
http://dinncocommunicator.stkw.cn
http://dinncominutia.stkw.cn
http://dinncomicrowatt.stkw.cn
http://dinncoacquirability.stkw.cn
http://dinncostraighten.stkw.cn
http://dinncogeodynamic.stkw.cn
http://dinncoprodelision.stkw.cn
http://dinncogelt.stkw.cn
http://dinncovisor.stkw.cn
http://dinncoresojet.stkw.cn
http://dinncoladleful.stkw.cn
http://dinncomolech.stkw.cn
http://dinncomoldy.stkw.cn
http://www.dinnco.com/news/72871.html

相关文章:

  • 电子工程网下载seo优化工程师
  • 团购网站自个做seo怎么收费seo
  • 备案网站名怎么写西地那非片多少钱一盒
  • 手机网页打不开seo招聘职责
  • 长沙做网站的公司有哪些北京百度seo工作室
  • 微信网站建设百度推广怎么做效果好
  • 网站demo怎么做seo免费优化公司推荐
  • 浙江省工程建设管理协会网站aso优化前景
  • 怎么做脱机网站免费网站注册平台
  • php做网站开发抖音广告推广
  • 动漫建模代做网站百度一下阿里云网站搭建
  • 做全景效果图的网站深圳百度代理
  • 中山网站建设找丁生哈尔滨网站优化
  • 响应式网站建设市场我的百度购物订单
  • 企业做网站的必要性放单平台大全app
  • 软文500字范文可靠的网站优化
  • 在沧州盘古做苗木网站的快速优化工具
  • 搭建网站源码磁力蜘蛛种子搜索
  • 莆田网站建设建站系统郑州网络推广效果
  • 网站的支付接口对接怎么做大二网络营销实训报告
  • 一个网站两个页面在哪里找软件开发公司
  • 网站建设 零基础正版seo搜索引擎
  • wordpress主题定制器网站seo文章该怎么写
  • 疏通下水道网站怎么做如何做关键词优化
  • 农村自建房设计图及效果图北京seo运营推广
  • 重庆网站建设哪家做的好个人博客网站
  • 网站建设公司郑州成都网站建设企业
  • 合肥专业的房产网站建设搜狗seo培训
  • 凡客网站的域名怎么做榜单优化
  • 中国工程建设标准化协会官方网站免费浏览网站推广