Task创建任务的几种方法

首先介绍一下Task,Task有什么用,说白了Task就是线程池ThreadPool的升级版,它弥补了ThreadPool的一些不足,比如说ThreadPool不支持线程的取消、完成、失败通知、执行的先后顺序等等,要实现这些功能需要完成额外的工作。

创建task的方式有很多,我在这先简单介绍几种

方式一:先创建,后执行

Task task = new Task(() => {
    //方法体    
});
task.Start();

方式二:创建并执行

Task task = Task.Run(() => {
    //方法体
});

方式三:利用TaskFactory(TaskFactory还有其他的功能,在这就先不说了)

TaskFactory taskFactory = Task.Factory;
//创建并启动任务
Task task = taskFactory.StartNew(() => {
    //方法体
});

方式四:创建一个在指定毫秒后执行的任务

Task task = Task.Delay(2000).ContinueWith(t =>
{
    //方法体
});

 

在C#中,可以使用`Task`类来创建多线程任务,这是.NET框架提供的用于并行编程的一种方式。以下是几种常见的写法: 1. 使用`Task.Run`创建并运行一个任务: ```csharp Task task = Task.Run(() => { // 执行后台任务代码 }); ``` `Task.Run`方法用于在后台线程上启动一项工作,它会尽可能地在新的线程上执行提供的委托,常用于CPU密集型任务。 2. 使用`Task`构造函数创建任务: ```csharp Task task = new Task(() => { // 执行后台任务代码 }); task.Start(); // 启动任务 ``` 这种方式允许你在创建任务后,可以有更多的控制,比如可以在启动任务前设置任务的某些属性。 3. 使用`async`和`await`与`Task`结合: ```csharp public async Task SomeMethodAsync() { Task task = Task.Run(() => { // 执行后台任务代码 }); await task; // 等待任务完成 // 继续执行后续代码 } ``` 这种方式结合了异步编程的优点,可以在不阻塞主线程的情况下,等待后台任务的完成。 4. 使用`Task.Factory.StartNew`创建并启动任务: ```csharp Task task = Task.Factory.StartNew(() => { // 执行后台任务代码 }); ``` `Task.Factory.StartNew`是一个灵活的方式来创建并启动任务,它提供了一些额外的配置选项,例如设置任务的优先级。 5. 创建`Task`并处理返回值: ```csharp Task<int> task = Task.Run(() => { // 执行计算任务代码,并返回结果 return result; }); int result = await task; // 等待任务完成并获取结果 ``` 这种方式适用于需要从任务中获取返回值的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小目标一个亿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值