当前位置:首页 > 数码 > Task.Run-异步编程的比较-C-async-与 (task.run方法)

Task.Run-异步编程的比较-C-async-与 (task.run方法)

admin9个月前 (04-15)数码114

概述: C#中的异步编程有两重要形式:Task.Run用于在后盾线程口头同步操作,而async-awt更适用于明晰表白异步流程。基础用法展现了它们的便捷运行,初级用规律展示了它们的联合经常使用,提供更灵敏的异步编程形式

在C#中,Task.Run和async-await都触及异步编程,但用法和场景有所不同。以下是详细解说以及相应实例代码,包括基础和初级用法。

基础用法:

经常使用Task.Run:

usingSystem;usingSystem.Threading.Tasks;classProgram{staticvoidMain(){Console.WriteLine("主线程开局");//经常使用Task.Run在后盾线程口头操作Task.Run(()=>DoSomeWork());Console.WriteLine("主线程完结");Console.ReadLine();}staticvoidDoSomeWork(){//模拟耗时操作Console.WriteLine("后盾线程开局上班");Task.Delay(2000).Wait();Console.WriteLine("后盾线程成功上班");}}

经常使用async-await:

usingSystem;usingSystem.Threading.Tasks;classProgram{staticasyncTaskMain(){Console.WriteLine("主线程开局");//经常使用async-await口头异步操作awaitDoSomeWorkAsync();Console.WriteLine("主线程完结");}staticasyncTaskDoSomeWorkAsync(){//模拟异步操作Console.WriteLine("异步操作开局");awaitTask.Delay(2000);//模拟异步上班Console.WriteLine("异步操作成功");}}

初级用法:

经常使用Task.Run:

task.run方法
usingSystem;usingSystem.Threading.Tasks;classProgram{staticasyncTaskMain(){Console.WriteLine("主线程开局");//经常使用Task.Run在后盾线程口头操作,并期待成功awaitTask.Run(async()=>{Console.WriteLine("后盾线程开局上班");awaitDoSomeWorkAsync();Console.WriteLine("后盾线程成功上班");});Console.WriteLine("主线程完结");}staticasyncTaskDoSomeWorkAsync(){//模拟异步操作awaitTask.Delay(2000);//模拟异步上班}}

经常使用async-await:

usingSystem;usingSystem.Threading.Tasks;classProgram{staticasyncTaskMain(){Console.WriteLine("主线程开局");//经常使用async-await口头多个异步操作awaitTask.WhenAll(DoSomeWorkAsync(),DoAnotherWorkAsync());Console.WriteLine("主线程完结");}staticasyncTaskDoSomeWorkAsync(){//模拟异步操作Console.WriteLine("异步操作1开局");awaitTask.Delay(2000);//模拟异步上班Console.WriteLine("异步操作1成功");}staticasyncTaskDoAnotherWorkAsync(){//模拟异步操作Console.WriteLine("异步操作2开局");awaitTask.Delay(1000);//模拟异步上班Console.WriteLine("异步操作2成功");}}

Task.Run适用于将同步操作放入异步高低文中,而async-await更适用于明晰表白异步流程。在初级用法中,两者可以联合经常使用,依据详细状况选用经常使用哪种形式。


C# 直接调用task方法和task.run、await task方法有什么区别吗?

第一种是同步调用,第二种是异步调用的简写,第三种是异步调用,和第二种区别不大,一般第三种要不就写在task run里面,要不就还是写在async方法里面

c#异步方法和task的区别

C#中的异步方法和Task是用于处理异步操作的不同方式。 异步方法是一种在C#中声明异步操作的方式,它使用关键字async和await来定义异步操作。 异步方法可以在执行期间暂停和恢复,它不会阻塞调用线程,允许其他任务继续执行。 异步方法通常用于处理I/O操作、网络通信、文件读写等需要等待外部资源的情况。 Task是C#中的一个异步编程模型,它提供了一种方便的方式来管理异步操作。 Task类封装了一个异步操作,可以返回一个结果并且可以取消该操作。 Task可以使用await关键字等待异步操作的完成,也可以使用()方法来运行一个异步操作。 Task提供了一种更高级的异步编程模型,可以更好地管理异步操作的执行和结果的获取。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: C#

“Task.Run-异步编程的比较-C-async-与 (task.run方法)” 的相关文章

15-C-个顶级开源项目-中值得收藏的

15-C-个顶级开源项目-中值得收藏的

简介 MediatR 是 .NET 平台上一个轻量级库,它简化了命令查询责任分离 (CQRS) 模式的实现。CQRS 是一个设计模式,它将应用程序中的命令和查询分离成不同的组件。这可以提高应...

及其初级控件摸索之旅-深化了解跨平台开发畛域的弱小工具-C (及其初级控件有哪些)

及其初级控件摸索之旅-深化了解跨平台开发畛域的弱小工具-C (及其初级控件有哪些)

前几天一个学员在学习C#与初级控件交互时,也不知道初级控件可以用来做什么。 上方咱们就具体讲讲C#和初级控件交互的关系常识。 C#是一种配置丰盛的面向对象编程言语,它蕴含了许多初级控件...

摸索C中的隐秘方法调用-解锁外部或私有方法的秘密通道-深化探寻五种有目共睹的方法

摸索C中的隐秘方法调用-解锁外部或私有方法的秘密通道-深化探寻五种有目共睹的方法

在C#中,可以经常使用不同的方法调用外部或私有方法。上方区分引见经过反射、MethodInfo.CreateDelegate、表白式(树)、灵活方法(call)、灵活方法(calli)这五种方法。...

C-线程本地存储-深化了解线程间值差别 (c++线程 window)

C-线程本地存储-深化了解线程间值差别 (c++线程 window)

为什么用ThreadStatic标志的字段,只要第一个线程拿到了初始值,其余线程都是自动值,让我能不能帮他解答一下,尼玛,我也不是神仙什么都懂,既然问了,那我试着帮他解答一下,也给前面相似不懂的好友解...

C#开发三个关键的内存区域-非托管堆内存和栈内存-托管堆内存 (c#开发实战)

C#开发三个关键的内存区域-非托管堆内存和栈内存-托管堆内存 (c#开发实战)

对内存的治理和操作大部分都是由运转时处置的。开发者无需过多关注内存治理的细节,由于托管堆内存的渣滓回收机制可以智能处置对象的调配和监禁。但是,在特定状况下,如与非托管代码交互、启动性能优化或处置少量数...

深入探索C中的LINQ魔法-功能概述和源代码剖析-b-b (进行深入探索)

深入探索C中的LINQ魔法-功能概述和源代码剖析-b-b (进行深入探索)

简介 LINQ(语言集成查询)是一种用于 C 中的数据查询和操作的强大工具。它允许开发人员使用类 C 语法而不是 SQL 语句来查询和操作各种数据源,例如集合、数组和 XML 文档。 20...

C-值传递与引用传递详解-中的参数传递 (c 值传递)

C-值传递与引用传递详解-中的参数传递 (c 值传递)

简介 C 是一种面向对象的编程语言,支持多种参数传递方式,包括传值和传引用两种方式。在本文中,我们将讨论 C 中的参数传递方式以及如何使用它们来实现不同的交互模式。 参数传递方式...