Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# manualresetevent

作者:冫LOVE灬丶棒棒   发布日期:2026-07-20   浏览:55

using System;
using System.Threading;

class Program
{
    static ManualResetEvent mre = new ManualResetEvent(false);

    static void Main()
    {
        // 启动一个线程
        Thread thread = new Thread(DoWork);
        thread.Start();

        Console.WriteLine("Press 'Enter' to signal the ManualResetEvent...");
        Console.ReadLine();

        // 信号通知ManualResetEvent,使等待的线程继续执行
        mre.Set();

        thread.Join();
        Console.WriteLine("Thread has finished execution.");
    }

    static void DoWork()
    {
        Console.WriteLine("Thread is waiting for the ManualResetEvent signal...");

        // 等待ManualResetEvent信号
        mre.WaitOne();

        Console.WriteLine("ManualResetEvent signaled. Thread can proceed.");
    }
}

解释说明:

  • ManualResetEvent 是一个同步基元,用于在线程之间进行通信。它有两种状态:已设置(signaled)和未设置(nonsignaled)。
  • 在这个示例中,主线程启动了一个新线程 DoWork,该线程会调用 mre.WaitOne() 进入等待状态,直到 mre.Set() 被调用。
  • 主线程等待用户按下回车键后,调用 mre.Set() 发出信号,通知所有等待的线程继续执行。
  • ManualResetEvent 的构造函数参数 false 表示初始状态为未设置,即线程会阻塞在 WaitOne() 处,直到 Set() 被调用。

上一篇:c# tabcontrol隐藏tabpage

下一篇:c# orderby

大家都在看

c# 二进制

c# 创建目录

c# socket服务端连接多个客户端

c# datatable group by

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

c# invoke方法

.net和c#

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站