ManualResetEvent,AutoResetEvent 学习
AutoResetEvent :通知正在等待的线程已发生事件。无法继承此类。
ManualResetEvent:通知一个或多个正在等待的线程已发生事件。无法继承此类。
using System; using System.Collections.Generic; using System.Text; using System.Threading; namespace MyWaitHandle { class Program { /// <summary> /// 参数指示是否是终止状态 /// </summary> static AutoResetEvent autoResetEvent = new AutoResetEvent(false); static void Main(string[] args) { Thread thread = new Thread(new ThreadStart(delegate() { Thread.Sleep(2000);//线程挂起2s autoResetEvent.Set();//发出信号,指示状态为终止状态 })); thread.Start();//线程开始执行 //由于初始状态是终止状态且未由线程发出终止状态,所以此线程一直阻止(不会执行输出A) //autoResetEvent.WaitOne(1000);通过设定时间指示等待时间,如果超时或得到终止状态,执行下面语句 //使用AutoResetEvent会再次把状态设为非终止状态,而ManualResetEvent不会,除非主动调用其Reset方法(这是同AutoRestEvent的重要区别) //如果AutoResetEvent autoResetEvent = new AutoResetEvent(true);则会立即执行,因为初始状态是终止状态 autoResetEvent.WaitOne(); //执行输出 Console.WriteLine("输出A"); //再次是非终止状态,线程阻止1s autoResetEvent.WaitOne(1000); Console.WriteLine("输出B"); Console.ReadLine(); } } }
ManualResetEvent,AutoResetEvent 学习相关推荐
- .NET多线程编程入门
在.NET多线程编程这个系列我们讲一起来探讨多线程编程的各个方面.首先我将在本篇文章的开始向大家介绍多线程的有关概念以及多线程编程的基础知识;在接下来的文章中,我将逐一讲述.NET平台上多线程编程的知 ...
- Thread concepts
多任务和多线程 在.NET多线程编程这个系列我们讲一起来探讨多线程编程的各个方面.首先我将在本篇文章的开始向大家介绍多线程的有关概念以及多线程编程的基础知识;在接下来的文章中,我将逐一讲述.NET平台 ...
- 【转】C#与C++的发展历程第一 - 由C#3.0起
C#5.0作为第五个C#的重要版本,将异步编程的易用度推向一个新的高峰.通过新增的async和await关键字,几乎可以使用同编写同步代码一样的方式来编写异步代码. 本文将重点介绍下新版C#的异步特性 ...
- 关于ThreadPool.RegisterWaitForSingleObject和WaitHandle的应用介绍
最近在学习线程相关的内容,所以把学习过程中的心得记录下来,相信大家常用 ThreadPool.QueueUserWorkItem()或者Thread thd=new Thread(new Thread ...
- c#.net多线程编程教学(3):线程同步
随着对多线程学习的深入,你可能觉得需要了解一些有关线程共享资源的问题. .NET framework提供了很多的类和数据类型来控制对共享资源的访问. 考虑一种我们经常遇到的情况:有一些全局变量和共享的 ...
- ThreadPool基础之RegisterWaitForSingleObject
首先我们看一下它的原型: public static RegisteredWaitHandle RegisterWaitForSingleObject( WaitHandle waitObj ...
- .Net线程问题解答
.Net线程问题解答 转自 http://www.cnblogs.com/yizhu2000/archive/2008/01/03/1011958.html 把遇到过的对.Net线程的一些问题和误解集 ...
- C# 实现多线程的同步方法详解
本文主要描述在C#中线程同步的方法.线程的基本概念网上资料也很多就不再赘述了.直接接入 主题,在多线程开发的应用中,线程同步是不可避免的.在.Net框架中,实现线程同步主要通过以下的几种方式来实现,在 ...
- C#中利用委托实现多线程跨线程操作
在使用VS2005的时候,如果你从非创建这个控件的线程中访问这个控件或者操作这个控件的话就会抛出这个异常.这是微软为了保证线程安全以及提高代码的效率所做的改进,但是也给大家带来很多不便. 其实解决这个 ...
最新文章
- Java比较数量怎么比较_java - 如何在Java数量比较字符 - SO中文参考 - www.soinside.com...
- nvidia:未找到命令
- [Android]使用Kotlin开发Android(二)
- 红帽OpenShift总经理谈容器技术需要关注的方向
- 『信息收集』GoogleHacking快速定位目标网站
- [LeetCode] Single Number
- Allegro PCB 如何测量距离?比如走线之间的距离
- linux c之孤儿进程与僵尸进程[总结]
- 【Effective Java】第二章:静态工厂、构建器、强化Singleton属性、私有构造器、
- 4K修复版《海上钢琴师》登陆全国院线,一文读懂背后的黑科技!
- 面试题,你手里有几个offer?
- 状态栏和navigationbar 关联上,结构体总是通过被复制的方式在代码中传递,因此请不要使用引用计数。...
- matlab圆柱饶流,有限元法解二维圆柱绕流问题.pdf
- Vue.js(学习Vue3之前必须要掌握的知识)
- python必背入门代码-你们都是怎么学 Python 的?
- MySQL中使用SQL语句对字段进行重命名
- php alias 报错,PHP: class_alias - Manual
- 老毛子出现app页面解决办法
- 玩拍七不再怕,判断7的倍数有妙招
- Centos 7 根目录存储容量调整大小