1.3 KiB
1.3 KiB
#unity/日常积累
创建 TaskQueue 的实例,并使用 EnqueueTask 方法来添加任务。这些任务将会按照它们被添加到队列中的顺序执行。
public class Program
{
public static async Task Main(string[] args)
{
var taskQueue = new TaskQueue();
// Enqueue some tasks
taskQueue.EnqueueTask(async () =>
{
Console.WriteLine("Task 1 started");
await Task.Delay(1000); // Simulate work
Console.WriteLine("Task 1 completed");
});
taskQueue.EnqueueTask(async () =>
{
Console.WriteLine("Task 2 started");
await Task.Delay(1000); // Simulate work
Console.WriteLine("Task 2 completed");
});
// Wait for a while to see the output
await Task.Delay(3000);
}
}
解释
-
ConcurrentQueue: 保证了任务按照入队顺序存储。
-
SemaphoreSlim: 控制同时只有一个任务在执行。当一个任务完成后,释放信号量并尝试执行下一个任务。
这种方法确保了即使在高并发环境下,任务也会按照它们被添加到队列中的顺序依次执行。这对于需要顺序处理的操作,如数据库更新、文件写入等,非常有用。