全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C# ManualResetEvent使用方法详解

本文实例为大家分享了ManualResetEvent的使用方法,供大家参考,具体内容如下

1. 源码下载:

下载地址:ManualResetEvent

Demo:

2. ManualResetEvent详解

    ManualResetEvent 允许线程通过发信号互相通信。通常,此通信涉及一个线程在其他线程进行之前必须完成的任务。当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用 Reset 以将 ManualResetEvent 置于非终止状态,此线程可被视为控制 ManualResetEvent。调用 ManualResetEvent 上的 WaitOne 的线程将阻止,并等待信号。当控制线程完成活动时,它调用 Set 以发出等待线程可以继续进行的信号。并释放所有等待线程。一旦它被终止,ManualResetEvent 将保持终止状态(即对 WaitOne 的调用的线程将立即返回,并不阻塞),直到它被手动重置。可以通过将布尔值传递给构造函数来控制 ManualResetEvent 的初始状态,如果初始状态处于终止状态,为 true;否则为 false。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
 
namespace ManualResetEventDemo
{
 class MREDemo
 {
  private ManualResetEvent _mre;
 
  public MREDemo()
  {
   this._mre = new ManualResetEvent(true);
  }
 
  public void CreateThreads()
  {
   Thread t1 = new Thread(new ThreadStart(Run));
   t1.Start();
 
   Thread t2 = new Thread(new ThreadStart(Run));
   t2.Start();
  }
 
  public void Set()
  {
   this._mre.Set();
  }
 
  public void Reset()
  {
   this._mre.Reset();
  }
 
  private void Run()
  {
   string strThreadID = string.Empty;
   try
   {
    while (true)
    {
     // 阻塞当前线程
     this._mre.WaitOne();
 
     strThreadID = Thread.CurrentThread.ManagedThreadId.ToString();
     Console.WriteLine("Thread(" + strThreadID + ") is running...");
 
     Thread.Sleep(5000);
    }
   }
   catch(Exception ex)
   {
    Console.WriteLine("线程(" + strThreadID + ")发生异常!错误描述:" + ex.Message.ToString());
   }
  }
 
 }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ManualResetEventDemo
{
 class Program
 {
  static void Main(string[] args)
  {
   Console.WriteLine("****************************");
   Console.WriteLine("输入\"stop\"停止线程运行...");
   Console.WriteLine("输入\"run\"开启线程运行...");
   Console.WriteLine("****************************\r\n");
 
   MREDemo objMRE = new MREDemo();
   objMRE.CreateThreads();
 
   while (true)
   {
    string input = Console.ReadLine();
    if (input.Trim().ToLower() == "stop")
    {
     Console.WriteLine("线程已停止运行...");
     objMRE.Reset();
    }
    else if (input.Trim().ToLower() == "run")
    {
     Console.WriteLine("线程开启运行...");
     objMRE.Set();
    }
   }
    
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# C#  # ManualResetEvent  # C#中多线程ManualResetEvent 与 AutoResetEvent 区别  # C# AutoResetEvent的具体使用方法  # C#中AutoResetEvent控制线程用法小结  # C#多线程之线程通讯(AutoResetEvent)  # C#使用AutoResetEvent实现同步  # C# ManualResetEvent用法详解  # C#中ManualResetEvent用法详解  # C# AutoResetEvent和ManualResetEvent的实现示例  # 下载地址  # 可以通过  # 大家分享  # 则为  # 具体内容  # 大家多多  # 到它  # 源码下载  # 即对  # 完成后  # 发信号  # 被视为  # 布尔值  # true  # input  # ReadLine  # false  # Collections  # System  # Linq 


相关文章: 如何生成腾讯云建站专用兑换码?  建站之星安装后如何自定义网站颜色与字体?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  建站168自助建站系统:快速模板定制与SEO优化指南  C++时间戳转换成日期时间的步骤和示例代码  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  小型网站建站如何选择虚拟主机?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  油猴 教程,油猴搜脚本为什么会网页无法显示?  C++如何使用std::optional?(处理可选值)  Java解压缩zip - 解压缩多个文件或文件夹实例  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Swift中switch语句区间和元组模式匹配  如何挑选高效建站主机与优质域名?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  建站之星如何通过成品分离优化网站效率?  高防服务器:AI智能防御DDoS攻击与数据安全保障  ,购物网站怎么盈利呢?  如何快速生成ASP一键建站模板并优化安全性?  如何快速生成可下载的建站源码工具?  常州企业建站如何选择最佳模板?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  招商网站制作流程,网站招商广告语?  如何制作网站标识牌,动态网站如何制作(教程)?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  如何在宝塔面板创建新站点?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何在万网自助建站平台快速创建网站?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  如何在香港服务器上快速搭建免备案网站?  如何在景安服务器上快速搭建个人网站?  建站主机选择指南:服务器配置与SEO优化实战技巧  为什么Go需要go mod文件_Go go mod文件作用说明  电商网站制作价格怎么算,网上拍卖流程以及规则?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  建站之星后台密码遗忘?如何快速找回?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  外贸公司网站制作,外贸网站建设一般有哪些步骤?  如何零基础在云服务器搭建WordPress站点?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  如何配置IIS站点权限与局域网访问? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。