首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让线程等待,直到另一个线程等待(C#)

在C#中,可以使用ManualResetEvent类来实现线程等待的功能。ManualResetEvent是一个同步基元,它允许一个或多个线程等待,直到收到信号后才继续执行。

下面是使用ManualResetEvent实现线程等待的示例代码:

代码语言:txt
复制
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

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券