c#中ManualResetEvent如何使用

  介绍

小编给大家分享一下c#中ManualResetEvent如何使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

具体内容如下

<强> 1。源码下载:

演示:

 C #中ManualResetEvent如何使用“> </p> <p> <强> 2。ManualResetEvent详解</强> </p> <p> ManualResetEvent允许线程通过发信号互相通信。通常,此通信涉及一个线程在其他线程进行之前必须完成的任务。当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用重置以将ManualResetEvent置于非终止状态,此线程可被视为控制ManualResetEvent。调用ManualResetEvent上的WaitOne的线程将阻止,并等待信号。当控制线程完成活动时,它调用设置以发出等待线程可以继续进行的信号,并释放所有等待线程。一旦它被终止,ManualResetEvent将保持终止状态(即对WaitOne的调用的线程将立即返回,并不阻塞),直到它被手动重置。可以通过将布尔值传递给构造函数来控制ManualResetEvent的初始状态,如果初始状态处于终止状态,为真的,否则为假的。</p> <pre class=使用系统;   使用System.Collections.Generic;   使用来;   使用text;   使用System.Threading;      名称空间ManualResetEventDemo   {   类MREDemo   {   私人ManualResetEvent _mre;      公共MREDemo ()   {   这一点。_mre=new ManualResetEvent(真正的);   }      公共空间createthread ()   {   线程t1=新线程(新ThreadStart(运行));   t1.Start ();      线程t2=新线程(新ThreadStart(运行));   t2.Start ();   }      公共空集()   {   this._mre.Set ();   }      公共空间重置()   {   this._mre.Reset ();   }      私人空间Run ()   {   字符串strThreadID=string.Empty;   试一试   {   而(真)   {//阻塞当前线程   this._mre.WaitOne ();      strThreadID=Thread.CurrentThread.ManagedThreadId.ToString ();   Console.WriteLine(“线程(“;+ strThreadID +“)运行…“);      thread . sleep (5000);   }   }   捕获(异常交货)   {   Console.WriteLine(“线程(“;+ strThreadID +“)发生异常!错误描述:“+ ex.Message.ToString ());   }   }      }   }

使用系统;
  使用System.Collections.Generic;
  使用来;
  使用text;
  
  名称空间ManualResetEventDemo
  {
  类项目
  {
  静态void Main (string [] args)
  {
  Console.WriteLine (“* * * * * * * * * * * * * * * * * * * * * * * * * * * *“);
  Console.WriteLine(“输入\“停止\“停止线程运行…“);
  Console.WriteLine(“输入\“运行\“开启线程运行…“);
  Console.WriteLine (“* * * * * * * * * * * * * * * * * * * * * * * * * * * * \ r \ n");
  
  MREDemo objMRE=new MREDemo ();
  objMRE.CreateThreads ();
  
  而(真)
  {
  字符串输入=Console.ReadLine ();
  如果(input.Trim () .ToLower ()==皊top")
  {
  Console.WriteLine(“线程已停止运行…“);
  objMRE.Reset ();
  }
  else if (input.Trim () .ToLower ()==皉un")
  {
  Console.WriteLine(“线程开启运行…“);
  objMRE.Set ();
  }
  }
  
  }
  }
  }

以上是c#中ManualResetEvent如何使用的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

c#中ManualResetEvent如何使用