2025-03-26 00:02:56 +08:00

1.3 KiB
Raw Permalink Blame History

#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: 控制同时只有一个任务在执行。当一个任务完成后,释放信号量并尝试执行下一个任务。

这种方法确保了即使在高并发环境下,任务也会按照它们被添加到队列中的顺序依次执行。这对于需要顺序处理的操作,如数据库更新、文件写入等,非常有用。