溫馨提示×

c# taskscheduler能并發執行任務嗎

c#
小樊
106
2024-11-25 14:02:48
欄目: 編程語言

是的,C# TaskScheduler 可以并發執行任務。TaskScheduler 是一個抽象類,用于表示一個任務調度器,它允許你自定義任務的執行方式。你可以創建一個自定義的 TaskScheduler 實現,以便更好地控制任務的執行方式。

默認情況下,TaskScheduler 使用線程池來執行任務。線程池會自動管理線程的創建和回收,以便在需要時并發執行任務。當你使用 Task.RunTask.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 實例。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女