是的,C# TaskScheduler
可以并發執行任務。TaskScheduler
是一個抽象類,用于表示一個任務調度器,它允許你自定義任務的執行方式。你可以創建一個自定義的 TaskScheduler
實現,以便更好地控制任務的執行方式。
默認情況下,TaskScheduler
使用線程池來執行任務。線程池會自動管理線程的創建和回收,以便在需要時并發執行任務。當你使用 Task.Run
或 Task.Factory.StartNew
方法創建任務時,這些方法會使用當前的 TaskScheduler
實例來調度和執行任務。
以下是一個簡單的示例,展示了如何使用 TaskScheduler
并發執行任務:
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static void Main()
{
// 創建一個自定義的 TaskScheduler,使用線程池
TaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
// 創建一個任務
Task task1 = Task.Run(() =>
{
Console.WriteLine("Task 1 started.");
Thread.Sleep(1000);
Console.WriteLine("Task 1 completed.");
}, CancellationToken.None, TaskCreationOptions.None, taskScheduler);
Task task2 = Task.Run(() =>
{
Console.WriteLine("Task 2 started.");
Thread.Sleep(2000);
Console.WriteLine("Task 2 completed.");
}, CancellationToken.None, TaskCreationOptions.None, taskScheduler);
// 等待所有任務完成
Task.WaitAll(task1, task2);
}
}
在這個示例中,我們創建了一個自定義的 ThreadPoolTaskScheduler
實例,并使用它來調度和執行兩個任務。這兩個任務將并發執行,因為它們都使用相同的 TaskScheduler
實例。