C# ManualResetEvent 类的用法

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

如下图所说是 ManualResetEvent 对象起一个信使的作用。

ManualResetEvent 对象的两个控制方法。
1、this.manualEvent.Reset(); //将事件状态设置为非终止状态,导致线程阻止。
2、this.manualEvent.Set(); //将事件状态设置为终止状态,允许一个或多个等待线程继续。

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

class MyThread

        {

            Thread t = null;

            ManualResetEvent manualEvent = new ManualResetEvent(true);//为trur,一开始就可以执行

            private void Run()

            {

                while (true)

                {

                    this.manualEvent.WaitOne();

                    Console.WriteLine("这里是  {0}", Thread.CurrentThread.ManagedThreadId);

                    Thread.Sleep(5000);

                }

            }

            public void Start()

            {

                this.manualEvent.Set();

            }

            public void Stop()

            {

                this.manualEvent.Reset();

            }

            public MyThread()

            {

                t = new Thread(this.Run);

                t.Start();

            }

        }

在 main 方法中要用到上面的类

static void Main(string[] args)

        {

            MyThread myt = new MyThread();

            while (true)

            {

                Console.WriteLine("输入 stop后台线程挂起 start 开始执行!");

                string str = Console.ReadLine();

                if (str.ToLower().Trim() == "stop")

                {

                    myt.Stop();

                }

                if (str.ToLower().Trim() == "start")

                {

                    myt.Start();

                }

            }

        }

原理就说完了我们来看一下程序运行的结果!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年5月    »
12345
6789101112
13141516171819
20212223242526
2728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864