400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

如何使用AutoResetEvent控制线程

本篇文章为大家展示了如何使用AutoResetEvent控制线程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的白水网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

AutoResetEvent概念

AutoResetEvent主要方法有

  1. AutoResetEvent(bool initialState):构造函数,用一个指示是否将初始状态设置为终止的布尔值初始化该类的新实例。 false:无信号,子线程的WaitOne方法不会被自动调用 true:有信号,子线程的WaitOne方法会被自动调用

  2. Reset ():将事件状态设置为非终止状态,导致线程阻止;如果该操作成功,则返回true;否则,返回false。

  3. Set ():将事件状态设置为终止状态,允许一个或多个等待线程继续;如果该操作成功,则返回true;否则,返回false。

  4. WaitOne(): 阻止当前线程,直到收到信号。

  5. WaitOne(TimeSpan, Boolean) :阻止当前线程,直到当前实例收到信号,使用 TimeSpan 度量时间间隔并指定是否在等待之前退出同步域。

有了上面的解释,开始展示代码

//若要将初始状态设置为终止,则为 true;若要将初始状态设置为非终止,则为 false        static AutoResetEvent oddResetEvent = new AutoResetEvent(false);        static AutoResetEvent evenResetEvent = new AutoResetEvent(false);        static int i = 0;        static void Main(string[] args)        {            //ThreadStart是个委托            Thread thread1 = new Thread(new ThreadStart(show));            thread1.Name = "偶数线程";            Thread thread2 = new Thread(new ThreadStart(show));            thread2.Name = "奇数线程";            thread1.Start();            Thread.Sleep(200);            thread2.Start();            Console.Read();
       }        public static void show()        {            if (i == 1) evenResetEvent.WaitOne();            while (i <= 100)            {                int num = i % 2;                if (num == 0)                {                    Console.WriteLine("{0}:{1}  {2}    ", Thread.CurrentThread.Name, i++, num);                    evenResetEvent.Set();                    oddResetEvent.WaitOne();                }               else                {                      Console.WriteLine("{0}:{1}  {2}    ", Thread.CurrentThread.Name, i++, num);                    //如果此时AutoResetEvent 为非终止状态,则线程会被阻止,并等待当前控制资源的线程通过调用 Set 来通知资源可用。否则不会被阻止                    oddResetEvent.Set();                    evenResetEvent.WaitOne();                }            }        }

结果如下图所示:
如何使用AutoResetEvent控制线程

上述内容就是如何使用AutoResetEvent控制线程,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


当前文章:如何使用AutoResetEvent控制线程
网页URL:http://www.bluegullmedia.com/article/godcjj.html

其他资讯

让你的专属顾问为你服务

0.0535s