全网整合营销服务商

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

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

C#中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;
using System.Threading.Tasks;
 
namespace ConsoleApplication2
{
  class MyThread
  {
    Thread t = null;
    ManualResetEvent manualEvent = new ManualResetEvent(true);//为trur,一开始就可以执行
    private void Run()
    {
      while (true)
      {
        this.manualEvent.WaitOne();
        Console.WriteLine("线程id:{0}", Thread.CurrentThread.ManagedThreadId);
        Thread.Sleep(2000);
      }
    }
 
    public void Start()
    {
      this.manualEvent.Set();
    }
 
    public void Stop()
    {
      this.manualEvent.Reset();
    }
 
    public MyThread()
    {
      t = new Thread(this.Run);
      t.Start();
    }
 
  }
 
  class Program
  {  
    static void Main(string[] args)
    {
      MyThread myt = new MyThread();     
      while (true)
      {
        Console.WriteLine("输入 stop 后台线程挂起 start 开始执行!");
        string str = Console.ReadLine();
        if (str.ToLower().Trim() == "stop")
        {
          Console.WriteLine("线程停止运行...\n");
          myt.Stop();
        }
        if (str.ToLower().Trim() == "start")
        {
          Console.WriteLine("线程开启运行...\n");
          myt.Start();
        }
      }
    }
    
  }
}


运行测试结果

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


# C#  # ManualResetEvent  # C#中多线程ManualResetEvent 与 AutoResetEvent 区别  # C# AutoResetEvent的具体使用方法  # C#中AutoResetEvent控制线程用法小结  # C#多线程之线程通讯(AutoResetEvent)  # C#使用AutoResetEvent实现同步  # C# ManualResetEvent用法详解  # C# ManualResetEvent使用方法详解  # C# AutoResetEvent和ManualResetEvent的实现示例  # 可以通过  # 则为  # 大家多多  # 到它  # 就可以  # 挂起  # 即对  # 完成后  # 发信号  # 被视为  # 布尔值  # class  # csharp  # Collections  # System  # brush  # Text  # Threading  # Tasks  # namespace 


相关文章: 如何高效生成建站之星成品网站源码?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  定制建站方案优化指南:企业官网开发与建站费用解析  无锡营销型网站制作公司,无锡网选车牌流程?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  制作网站的软件免费下载,免费制作app哪个平台好?  北京网站制作公司哪家好一点,北京租房网站有哪些?  Android使用GridView实现日历的简单功能  如何做网站制作流程,*游戏网站怎么搭建?  如何高效利用亚马逊云主机搭建企业网站?  如何彻底卸载建站之星软件?  香港网站服务器数量如何影响SEO优化效果?  如何基于云服务器快速搭建网站及云盘系统?  公众号网站制作网页,微信公众号怎么制作?  如何快速搭建响应式可视化网站?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  建站主机默认首页配置指南:核心功能与访问路径优化  家具网站制作软件,家具厂怎么跑业务?  如何注册花生壳免费域名并搭建个人网站?  香港服务器如何优化才能显著提升网站加载速度?  如何用wdcp快速搭建高效网站?  如何选择香港主机高效搭建外贸独立站?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  盘锦网站制作公司,盘锦大洼有多少5G网站?  建站VPS选购需注意哪些关键参数?  上海网站制作开发公司,上海买房比较好的网站有哪些?  Android自定义listview布局实现上拉加载下拉刷新功能  如何快速使用云服务器搭建个人网站?  网站制作企业,网站的banner和导航栏是指什么?  如何用5美元大硬盘VPS安全高效搭建个人网站?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  建站之星安装提示数据库无法连接如何解决?  如何用AWS免费套餐快速搭建高效网站?  如何通过WDCP绑定主域名及创建子域名站点?  如何高效配置香港服务器实现快速建站?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  学校为何禁止电信移动建设网站?  小程序网站制作需要准备什么资料,如何制作小程序?  孙琪峥织梦建站教程如何优化数据库安全?  招商网站制作流程,网站招商广告语?  常州企业网站制作公司,全国继续教育网怎么登录?  如何在IIS中配置站点IP、端口及主机头?  如何正确选择百度移动适配建站域名?  如何构建满足综合性能需求的优质建站方案?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  在线制作视频网站免费,都有哪些好的动漫网站? 

您的项目需求

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