在C#中,協程(Coroutine)是一種輕量級的線程,可以在單個線程上實現并發執行。要使用協程進行任務調度,可以使用async和await關鍵字。以下是一個簡單的示例,展示了如何使用協程進行任務調度:
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// 創建一個任務列表
var tasks = new List<Task>
{
Task.Run(() => ScheduleTask("Task 1")),
Task.Run(() => ScheduleTask("Task 2")),
Task.Run(() => ScheduleTask("Task 3"))
};
// 等待所有任務完成
await Task.WhenAll(tasks);
Console.WriteLine("All tasks completed.");
}
static async Task ScheduleTask(string taskName)
{
Console.WriteLine($"Scheduling {taskName}...");
// 模擬任務執行時間
await Task.Delay(1000);
Console.WriteLine($"{taskName} completed.");
}
}
在這個示例中,我們創建了一個任務列表,其中包含三個任務。每個任務都調用ScheduleTask方法,該方法使用async和await關鍵字來調度任務執行。Task.Delay方法用于模擬任務執行時間。最后,我們使用Task.WhenAll方法等待所有任務完成。
請注意,這個示例中的任務調度是基于線程池的。C#會自動將任務分配給線程池中的線程來執行。如果你需要更精細的控制任務調度,可以考慮使用TaskScheduler類。