博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ManualResetEvent 类的用法
阅读量:5230 次
发布时间:2019-06-14

本文共 1613 字,大约阅读时间需要 5 分钟。

引用:

先说是一下  ManualResetEvent 是一线程用来控制别一个线程的信号。大家可以把它看成 操作系统原理中说到的pv操作如下图所说是 ManualResetEvent 对象起一个信使的作用。

 

ManualResetEvent 对象的两个控制方法。

1、this.manualEvent.Reset(); //将事件状态设置为非终止状态,导致线程阻止。

2、this.manualEvent.Set();   //将事件状态设置为终止状态,允许一个或多个等待线程继续。

说了这么多光说不做还真没有用,接下来看代码!

1 public class MyThread 2 { 3     Thread t = null; 4     ManualResetEvent manualEvent = new ManualResetEvent(true);//为trur,一开始就可以执行 5  6     private void Run() 7     { 8         while (true) 9         {10             this.manualEvent.WaitOne();11             Console.WriteLine("Thread Id:{0},Name:{1}.", Thread.CurrentThread.ManagedThreadId,Thread.CurrentThread.Name);12             Thread.Sleep(1000);13         }14     }15 16     public void Start()17     {18         this.manualEvent.Set();19     }20 21     public void Stop()22     {23         this.manualEvent.Reset();24     }25 26     public MyThread(string threadName="thread001")27     {28         t = new Thread(this.Run);29         t.Name = threadName;30         t.Start();31     }32 33 }
View Code

调用方法:

1 class Program 2 { 3     static void Main(string[] args) 4     { 5         MyThread myt = new MyThread("MyThread001"); 6  7         while (true) 8         { 9             Console.WriteLine("输入 stop后台线程挂起 start 开始执行!");10             string str = Console.ReadLine();11             if (str.ToLower().Trim() == "stop")12             {13                 myt.Stop();14             }15 16             if (str.ToLower().Trim() == "start")17             {18                 myt.Start();19             }20         }21     }22 }
View Code

调用流程:

 

转载于:https://www.cnblogs.com/xzxBlog/p/4605275.html

你可能感兴趣的文章
ANE-调用原生地图注意点
查看>>
HttpClient-post请求,含图片
查看>>
chm内容链接地址错误修复步骤
查看>>
COGS 1406. 邻居年龄排序[Age Sort,UVa 11462](水题日常)
查看>>
2018二月实现计划成果及其三月规划
查看>>
什么时候使用依赖库的形式导入项目
查看>>
android 设置Dialog的宽度
查看>>
std::thread join和detach区别
查看>>
定时器(了解)
查看>>
Javascript操作Dom对象
查看>>
C#之Socket的简单使用
查看>>
vsftp登录时间太长的解决办法
查看>>
Mybatis整合Spring
查看>>
安卓NDK操作sqlite3
查看>>
维度-共享维度
查看>>
jQuery extend 函数
查看>>
Swift课程大纲
查看>>
BZOJ1458: 士兵占领
查看>>
点击文字使RadioButton被选中
查看>>
关于Unity中的新手编码技巧
查看>>