C# Task.Run 可以设置多个吗?
时间: 2024-12-13 16:26:25 浏览: 3
C# 多线程详细讲解
在C#中,`Task.Run` 是一个静态方法,用于立即异步地执行给定的工作,通常会将工作委托到非UI线程上。它可以接受一个Action(无返回值的匿名函数)作为参数,这个函数会在一个新的线程上执行。`Task.Run`本身一次只能启动一个任务,如果你想要同时运行多个独立的任务,你需要创建多个`Task`实例,每个实例对应一个单独的工作。
下面是一个例子,展示如何创建并启动多个`Task`:
```csharp
// 创建多个工作项
Func<Task>[] tasks = new Func<Task>[5];
for (int i = 0; i < tasks.Length; i++)
{
tasks[i] = () =>
{
Console.WriteLine($"Task {i} started on thread: {Thread.CurrentThread.ManagedThreadId}");
// 这里是你要执行的具体任务
Thread.Sleep(1000); // 假设这是一个耗时操作
Console.WriteLine($"Task {i} finished");
};
}
// 启动所有任务
foreach (Func<Task> task in tasks)
{
Task.Run(task);
}
// 等待所有任务完成
await Task.WhenAll(tasks);
```
在这个示例中,我们创建了5个独立的任务,每个任务都在新的线程上执行,然后使用`Task.WhenAll`等待它们全部完成。
阅读全文