C# 在函数进程中加wait
时间: 2024-04-24 15:26:07 浏览: 98
c# 双进程守候
在C#中,可以使用`Task.Wait`或`Task.WaitAll`方法来等待一个或多个任务在函数内执行完成。这样可以确保在执行后续代码之前,所有的任务都已经完成了。以下是示例代码:
```csharp
using System;
using System.Threading.Tasks;
class Program
{
static void Main()
{
Console.WriteLine("开始执行任务");
Task task1 = Task.Run(() => DoTask(1));
Task task2 = Task.Run(() => DoTask(2));
// 等待任务1和任务2都完成
Task.WaitAll(task1, task2);
Console.WriteLine("所有任务已完成");
}
static void DoTask(int taskId)
{
// 模拟任务执行
Console.WriteLine($"任务{taskId}开始执行...");
Task.Delay(2000).Wait(); // 延时2秒
Console.WriteLine($"任务{taskId}执行完成");
}
}
```
在上面的示例中,我们创建了两个异步任务`task1`和`task2`,并使用`Task.Run`方法将它们放入线程池中执行。然后,通过调用`Task.WaitAll(task1, task2)`等待这两个任务都完成。`WaitAll`方法会阻塞当前线程,直到所有的任务都完成。
注意,在使用`Task.Wait`或`Task.WaitAll`等待任务完成时,要确保不会出现死锁的情况。例如,在异步方法内部调用`Wait`方法会导致死锁,因为异步方法在等待异步操作完成时会释放当前线程,而`Wait`方法会阻塞当前线程,导致死锁。所以在使用`Wait`或`WaitAll`时,要确保不会出现这样的情况。
阅读全文