在C#中,可以使用ManualResetEvent
类来实现线程等待的功能。ManualResetEvent
是一个同步基元,它允许一个或多个线程等待,直到收到信号后才继续执行。
下面是使用ManualResetEvent
实现线程等待的示例代码:
using System;
using System.Threading;
class Program
{
static ManualResetEvent waitHandle = new ManualResetEvent(false);
static void Main(string[] args)
{
Thread thread1 = new Thread(DoWork);
Thread thread2 = new Thread(WaitForThread1);
thread1.Start();
thread2.Start();
// 主线程等待一段时间后,发送信号给thread1
Thread.Sleep(2000);
waitHandle.Set();
thread1.Join();
thread2.Join();
}
static void DoWork()
{
Console.WriteLine("Thread 1 is doing some work...");
// 等待信号
waitHandle.WaitOne();
Console.WriteLine("Thread 1 continues its work...");
}
static void WaitForThread1()
{
Console.WriteLine("Thread 2 is waiting for Thread 1...");
// 等待信号
waitHandle.WaitOne();
Console.WriteLine("Thread 2 continues its work...");
}
}
在上面的示例中,ManualResetEvent
对象waitHandle
被初始化为false
,表示线程需要等待。当主线程调用waitHandle.Set()
方法后,waitHandle
的状态变为true
,线程1和线程2都会继续执行。
这里推荐腾讯云的云服务器(CVM)产品,它提供了高性能、可扩展的云服务器实例,适用于各种计算场景。您可以通过以下链接了解更多信息:
腾讯云云服务器(CVM)产品介绍:https://cloud.tencent.com/product/cvm
领取专属 10元无门槛券
手把手带您无忧上云