c#有四个线程,如何让这四个线程按顺序执行,一个执行完执行下一个
时间: 2024-10-25 20:07:25 浏览: 10
在 C# 中,如果你想要控制四个线程按照特定的顺序执行,你可以使用 `Task` 和 `TaskScheduler` 结合 `ContinueWith` 或者自定义一个线程同步结构如 `ManualResetEventSlim` 来协调它们。这里提供一种基于 `ContinueWith` 的解决方案:
```csharp
using System;
using System.Threading.Tasks;
class Program
{
private static ManualResetEventSlim[] semaphores = new ManualResetEventSlim[4];
static void Main()
{
// 初始化所有信号量
for (int i = 0; i < 4; i++)
{
semaphores[i] = new ManualResetEventSlim(initialState: false);
}
Task task1 = ExecuteAsync(0);
Task task2 = ExecuteAsync(1);
Task task3 = ExecuteAsync(2);
Task task4 = ExecuteAsync(3);
// 等待所有任务完成
await Task.WhenAll(task1, task2, task3, task4);
}
private static async Task ExecuteAsync(int index)
{
Console.WriteLine($"Thread {index + 1} starting...");
// 等待前一个任务完成后释放当前信号量
await semaphores[index].WaitAsync();
Console.WriteLine($"Thread {index + 1} executing...");
// 执行你的业务代码...
// 完成当前任务并允许下一线程继续
semaphores[(index + 1) % 4].Set();
Console.WriteLine($"Thread {index + 1} completed.");
}
}
```
在这个例子中,每个线程在开始执行前都会等待前一个线程通过设置信号量来通知它可以继续。当一个线程完成时,它会将信号量传递给下一位,形成一个循环。
阅读全文