- 浏览: 247204 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (293)
- web (1)
- [随笔分类]项目管理 (30)
- [随笔分类]WCF (14)
- 未分类 (1)
- [随笔分类]Linq (4)
- [随笔分类]C#基础 (24)
- 项目 (1)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (8)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (9)
- [随笔分类]Ubuntu (4)
- ASP.Net (1)
- [网站分类]2..NET新手区(用于发表不合适发表在首页的.NET技术文章,包括小经验、小技巧) (30)
- [随笔分类]ASP.NET MVC (20)
- [随笔分类]ASP.NET (3)
- [随笔分类]程序员厨房 (4)
- [随笔分类]英语学习 (28)
- [网站分类]4.其他技术区 (1)
- [随笔分类]Silverlight (12)
- [随笔分类]CodeSmith (8)
- [随笔分类]其他 (4)
- [随笔分类]Ruby (4)
- [发布至博客园首页] (34)
- [网站分类]其他技术区 (3)
- [随笔分类]Ruby on Rails (2)
- [网站分类].NET新手区 (33)
- [随笔分类]TDD (1)
- [随笔分类]不谈技术 (2)
- [网站分类]非技术区 (7)
最新评论
-
yicone:
You make a mistake when paste t ...
WCF步步为营(一):简单示例 -
jinweijie:
你好,这个实现不错,但是在用了scriptmanager以后就 ...
在服务器端保存ViewState
WaitHandle用于实现对共享资源的独占访问,AutoResetEvent和ManualResetEvent都继承自它。 WaitHandle.WaitOne方法将阻塞当前线程,直到WaitHandle收到信号。但有时候,我们需要非阻塞的方式测试WaitHandle 状态。
public virtual bool WaitOne(int millisecondsTimeout)
可以指定等待的时间间隔。如果当前实例收到信号,则为true;否则为false。特别地,如果 millisecondsTimeout为零,则该方法不会进入阻塞状态。该方法会测试等待句柄的状态并立即返回。
ManualResetEvent mre=new ManualResetEvent(false) //默认无信号
mre.set()可以让当前实例获得信号
现在我们先让程序每个10秒输出Hello world,可以这么写:
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using System.Threading;
6:
7: namespace MultiThread
8: {
9: public class Program
10: {
11: static ManualResetEvent mre = new ManualResetEvent(false);
12: static void Main()
13: {
14: Thread t = new Thread(new ThreadStart(Hello));
15: t.Start();
16: while (true)
17: {
18: char a = Console.ReadKey().KeyChar;
19: if (a.ToString().ToUpper() == "X")
20: {
21: mre.Set();
22: t.Abort();
23: t.Join();
24: Console.WriteLine(t.Name + " stopped");
25: break;
26: }
27: }
28: }
29:
30: static void Hello()
31: {
32: while (true)
33: {
34: if (mre.WaitOne(1 * 1000)) break;
35: Console.WriteLine("Hello");
36: }
37: }
38: }
39: }
40:
发表评论
-
C#拾遗系列(1):委托
2008-06-11 14:43 558一、委托概述 委托具有以下特点: 委托类似于 ... -
C#拾遗系列(2):属性
2008-06-11 14:54 6811. 这里主要演示属性的继承和覆盖 2. 把属性理解为方法 ... -
C#拾遗系列(3):构造函数
2008-06-11 15:19 5841. 主要演示构造函数的继承 声明空 ... -
C#拾遗系列(4):索引器
2008-06-11 15:30 7341. 概述 索引器允许类或结构的实例就像数组一样进行索引。索引 ... -
C#拾遗系列(5):泛型委托
2008-06-14 17:25 564using System; using System.Col ... -
C#拾遗系列(6):迭代器
2008-06-14 23:03 4971. 示例: using System; using Sys ... -
C#拾遗系列(7):自定义属性
2008-06-18 14:52 6241 .描述 属性提供功能强大的方法以将声明信息与 C# 代码( ... -
C#拾遗系列(8):异常
2008-06-19 11:02 572using System; using System.Col ... -
C#拾遗系列(9):继承、接口、扩展方法、分部类、类操作、Ref and Out、可空类型
2008-06-19 15:07 1114本文内容: 继承 Equal示例 结构和类 ... -
MSIL(0):简介
2009-03-04 23:06 821Microsoft Intermediate Language ... -
MSIL(1): Hello World
2009-03-09 22:14 7371. 用记事本编写如下代码 .assembly HelloWo ... -
代码段:ASCII to Unicode
2009-04-17 10:44 7471: private string Co ... -
Get countries from system
2009-05-08 16:02 7621: using System; 2: usi ... -
[Tips]:Read value from Resource file in C#
2009-05-18 16:18 9951: //Namespace refer ... -
C#拾遗系列(1):委托
2008-06-11 14:43 628一、委托概述 委托具有以下特点: 委托 ... -
C#拾遗系列(2):属性
2008-06-11 14:54 5611. 这里主要演示属性的继承和覆盖 2. 把属性理解为方法 ... -
C#拾遗系列(3):构造函数
2008-06-11 15:19 6071. 主要演示构造函数的继承 ... -
C#拾遗系列(4):索引器
2008-06-11 15:30 5611. 概述 索引器允许类或结构的实例就像数组一样进行索引。索引 ... -
C#拾遗系列(5):泛型委托
2008-06-14 17:25 649using System; using System.Col ... -
C#拾遗系列(6):迭代器
2008-06-14 23:03 6771. 示例: using System; using Sys ...
相关推荐
简单讲解ManualResetEvent用法,DEMO可以运行,简单易懂
当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用 Reset 以将 ManualResetEvent 置于非终止状态,此线程可被视为控制 ManualResetEvent。调用 ManualResetEvent 上的 WaitOne 的线程
引入命名空间: using System.Threading; AutoResetEvent: autoResetEvent.WaitOne();//运行完后,**自动将事件...ManualResetEvent: manulResetEvent.WaitOne();//运行完后,**不会自动将事件状态设置为无信号**
C# 使用Mutex和AutoResetEvent类处理多线程同步与互斥,调试并完善了网上文档的代码。经测试能很好地实现要求,但还有一些地方不是特别明白,都写在注释中了,请高手给予指点。
C#多线程学习(一) 多线程的相关概念 什么是进程? 什么是线程? 什么是多线程? 多线程的好处 多线程的不利方面 线程操作的关键对象和语句 任何程序在执行时,至少有一个主线程。 Thread类有几个至关重要的方法 C#...
C#多线程学习入门圣典 doc文档,对关键字进行排版和着色. 可以一目了然的进行学习 C#多线程学习(一) 多线程的相关概念 1 什么是进程? 1 什么是线程? 1 什么是多线程? 1 多线程的好处 1 多线程的不利方面 1 线程...
C#多线程实验,就AutoResetEvent,ManualResetEvent,Thread.join(),委托多线程回调。
C#多线程学习(一) 多线程的相关概念 1 什么是进程? 1 什么是线程? 1 什么是多线程? 1 多线程的好处 1 多线程的不利方面 1 线程操作的关键对象和语句 2 任何程序在执行时,至少有一个主线程。 2 Thread类...
主要介绍了C# ManualResetEvent用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
ManualResetEvent继续等待,ManualResetEvent超时后重置,VBNET源码,C#可用
.NET多线程同步方法详解(一):自由锁(InterLocked) 本文主要描述在C#中线程同步的方法。线程的基本概念网上资料也很多就不再赘述了。直接接入主题,在多线程开发的应用中,线程同步是不可避免的。在.Net框架中,...
这是一个ManualResetEvent最简单的测试代码,用最简单的代码解释了ManualResetEvent的用法。
最近捣鼓了一下多线程的同步问题,发现其实C#关于多线程同步事件处理还是很灵活,这里主要写一下,自己测试的一些代码,涉及到了AutoResetEvent 和 ManualResetEvent,当然还有也简要提了一下System.Threading....
ManualResetEvent的用法.日积月累
主要分为八个部分:1.线程Thread;2.后台线程BackGroundWorker;3.互斥锁Monitor、Lock、Mutex;...8.其他,UI多线程,Timer等;博客地址:http://blog.csdn.net/pfe_nova/article/details/38470873
线程事例代码,ManualResetEvent,AutoResetEvent
直接接入 主题,在多线程开发的应用中,线程同步是不可避免的。在.Net框架中,实现线程同步主要通过以下的几种方式来实现,在MSDN的线程指南中已经讲了几种,这里结合作者实际中用到的方式一起说明一下。 1. 维护...
ManualResetEvent Timer组件 托管函数 委托加减 我的委托 AsyncCallback
ManualResetEvent是一个超时等待的线程锁,如果超时返回false,接收指令显示true,但是没法实现在超时后让他继续等待,这种需求我们可以用在以下场景: 控制线程超时方法 1.[主线程]:请求方发送请求,立即创建超时等待...
ManualResetEven类的reset,waione,set方法的详细介绍,有多个实事例帮助理解