首页 > 编程语言 >C# Task与Action和Func

C# Task与Action和Func

时间:2024-08-20 18:49:20浏览次数:8  
标签:Task Run C# MethodWithNoReturnValue Func Action MethodWithReturnValue

在C#中,Task是用于表示异步操作的类型。ActionFunc<>是用于定义无返回值的方法和有返回值的方法委托。

1.使用Action委托

Action委托是无返回值的,你可以使用它来异步执行一个方法。

Action action = () => MethodWithNoReturnValue();
Task.Run(action);

2.使用Func<>委托

Func<>委托是有返回值的,你可以使用它来异步执行一个有返回值的方法。

Func<string> func = () => MethodWithReturnValue();
Task<string> task = Task.Run(func);

3.使用Task.Factory.StartNew

Task.Factory.StartNew方法可以接受ActionFunc<>委托来创建Task

Task.Factory.StartNew(() => MethodWithNoReturnValue());
Task.Factory.StartNew<string>(() => MethodWithReturnValue());

4.使用Task.Run

Task.Run方法也可以接受ActionFunc<>委托来创建Task

Task.Run(() => MethodWithNoReturnValue());
Task.Run<string>(() => MethodWithReturnValue());

5.使用Task.ContinueWith

Task.ContinueWith方法可以在一个Task完成后,启动另外一个Task

Task task = Task.Run(() => MethodWithNoReturnValue());
task.ContinueWith(t => MethodWithNoReturnValue());
 
Task<string> taskWithReturnValue = Task.Run(() => MethodWithReturnValue());
taskWithReturnValue.ContinueWith(t => MethodWithReturnValue(t.Result));

 

标签:Task,Run,C#,MethodWithNoReturnValue,Func,Action,MethodWithReturnValue
From: https://www.cnblogs.com/Fpack/p/18370066

相关文章

  • NSSCTF [SWPUCTF 2021 新生赛]crypto8
    开启环境,什么东西?只有一个文件???那就先下载下来看看73E-30U1&>V-H965S95]I<U]P;W=E<GT`这样一串字符,没有网页,只有文件,那肯定是用某种加密方式加密之后的结果。但是这个形式的加密是真没见过,才疏学浅,只能先上网取经了。看了这篇大佬的文章大佬说是UUencode编码,先去找个解码器试......
  • C# Task
    Task 是C#中用于异步编程的一个核心组件,它表示一个异步操作的最终完成。Task 可以返回一个结果或者不返回任何结果(Task 类型),并且可以与其他 Task 对象组合和等待它们的完成。创建Task:Task.Run(()=>{//异步执行的代码});等待Task完成:awaitTask.Run(()=>{//异步执行......
  • [C++] template+struct 组合使用小技巧
    1.简单说明  struct+template的组合可以让我们使用同一个结构体名称(注意:只是名称相同,但是本质上已经不同了),实现不同的结构体功能,可以将其理解为设计模式中的工程模式。2.代码示例  首先,声明一个枚举类型,用于区别结构体,然后使用template+struct,声明一个结构体,只声明不实现......
  • go的github.com/prometheus如何在单测中校验值是否正确
    假如我的指标定义如下:MetricGroupStatGauge=prometheus.NewGaugeVec(prometheus.GaugeOpts{ Name:"test", Help:"test",},[]string{"name","age","sex"})...忽略对指标添加数据的代码那么如何取值进行校验呢?注意:GetMetricWithLabelValues(&......
  • StringGrid单元格绑定ComboBox、DateTimePicker或窗口传值
    一、初始化控件状态procedureTForm7.FormCreate(Sender:TObject);beginwithStringGrid1dobeginColWidths[0]:=15;Cells[1,0]:='Combobox';ColWidths[1]:=100;Cells[2,0]:='DateTimePicker';ColWidths[2]:=100;......
  • Docker部署jumpserver
    1.JumpServer概述JumpServer是全球首款完全开源的堡垒机,使用GNUGPLv2.0开源协议,是符合4A的专业运维审计系统。JumpServer使用Python/Django进行开发,遵循Web2.0规范,配备了业界领先的WebTerminal解决方案,交互界面美观、用户体验好。JumpServer采纳分布式架......
  • 数据结构-队列 c语言使用链表和数组分别实现
    队列定义队列(queue)是一种遵循先入后到规则的线性数据结构,将队列头部称为“队首”,尾部称为“队尾”,把元素加入队尾称为“入队”,删除队首元素称为“出队”。队列实现基于链表的实现将链表的头节点和尾结点分别视为“队首”和“队尾”,规定队尾仅可添加节点,队首仅可删除节点。......
  • 打印空心正方形(c语言)
    1.//KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的“空心”正方形图案。//输入描述://多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。//输出描述://针对每行输入,输出用“*”组成的“空心”正方形,每个“*......
  • 汇编语言的构建大师:宏(Macro)的深度解析
    标题:汇编语言的构建大师:宏(Macro)的深度解析在汇编语言的世界里,宏(Macro)是一种强大的工具,它允许开发者定义一段可重用的代码片段,这些片段可以在程序中多次调用,从而提高编程效率和代码的可读性。本文将深入探讨宏的概念、作用以及如何在汇编语言中使用宏,并通过代码示例展示其应......
  • PyTorch中的随机采样秘籍:SubsetRandomSampler全解析
    标题:PyTorch中的随机采样秘籍:SubsetRandomSampler全解析在深度学习的世界里,数据是模型训练的基石。而如何高效、合理地采样数据,直接影响到模型训练的效果和效率。PyTorch作为当前流行的深度学习框架,提供了一个强大的工具torch.utils.data.SubsetRandomSampler,它允许开发者......