C#使用task任务完成多线程 启动以及关闭任务
在C#中,可以使用Task类来创建和管理多线程任务。以下是使用Task完成多线程任务的示例代码:
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main()
{
// 创建一个Task并启动
Task task = Task.Run(() =>
{
// 任务执行的代码
Console.WriteLine("Task is running...");
Thread.Sleep(1000);
Console.WriteLine("Task is completed.");
});
// 等待任务完成
task.Wait();
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
在上面的示例中,我们使用Task.Run方法创建了一个任务,并使用Wait方法等待任务完成。任务的执行代码位于Task.Run方法的参数中,这里我们使用Thread.Sleep方法模拟一段耗时的任务。
如果需要同时启动多个任务,可以使用Task.WhenAll方法来等待所有任务完成。以下是一个示例代码:
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main()
{
// 创建并启动多个任务
Task[] tasks = new Task[3];
for (int i = 0; i < tasks.Length; i++)
{
int index = i; // 避免闭包问题
tasks[i] = Task.Run(() =>
{
Console.WriteLine($"Task {index + 1} is running...");
Thread.Sleep(1000);
Console.WriteLine($"Task {index + 1} is completed.");
});
}
// 等待所有任务完成
Task.WhenAll(tasks).Wait();
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
在上面的示例中,我们创建了一个包含三个任务的数组,并使用循环启动了这三个任务。然后使用Task.WhenAll方法等待所有任务完成。
在需要关闭任务时,可以使用CancellationToken来取消任务的执行。以下是一个示例代码:
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main()
{
// 创建CancellationTokenSource
CancellationTokenSource cts = new CancellationTokenSource();
// 创建任务并传入CancellationToken
Task task = Task.Run(() =>
{
// 任务执行的代码
Console.WriteLine("Task is running...");
while (!cts.Token.IsCancellationRequested)
{
// 任务的循环执行代码
}
Console.WriteLine("Task is cancelled.");
}, cts.Token);
// 等待一段时间后取消任务
Thread.Sleep(1000);
cts.Cancel();
// 等待任务完成
task.Wait();
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
在上面的示例中,我们创建了一个CancellationTokenSource对象,并将其Token属性传递给任务。在任务的循环执行代码中,我们使用IsCancellationRequested属性来检查任务是否被取消。然后在一段时间后调用Cancel方法取消任务的执行。
以上是使用Task类完成多线程任务的基本示例,通过使用Task可以方便地创建和管理多线程任务,实现并行执行和任务的控制
原文地址: https://www.cveoy.top/t/topic/iMRJ 著作权归作者所有。请勿转载和采集!