- 浏览: 255671 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 586一、委托概述 委托具有以下特点: 委托类似于 ... -
C#拾遗系列(2):属性
2008-06-11 14:54 7081. 这里主要演示属性的继承和覆盖 2. 把属性理解为方法 ... -
C#拾遗系列(3):构造函数
2008-06-11 15:19 6151. 主要演示构造函数的继承 声明空 ... -
C#拾遗系列(4):索引器
2008-06-11 15:30 7671. 概述 索引器允许类或结构的实例就像数组一样进行索引。索引 ... -
C#拾遗系列(5):泛型委托
2008-06-14 17:25 586using System; using System.Col ... -
C#拾遗系列(6):迭代器
2008-06-14 23:03 5191. 示例: using System; using Sys ... -
C#拾遗系列(7):自定义属性
2008-06-18 14:52 6401 .描述 属性提供功能强大的方法以将声明信息与 C# 代码( ... -
C#拾遗系列(8):异常
2008-06-19 11:02 595using System; using System.Col ... -
C#拾遗系列(9):继承、接口、扩展方法、分部类、类操作、Ref and Out、可空类型
2008-06-19 15:07 1145本文内容: 继承 Equal示例 结构和类 ... -
MSIL(0):简介
2009-03-04 23:06 852Microsoft Intermediate Language ... -
MSIL(1): Hello World
2009-03-09 22:14 7621. 用记事本编写如下代码 .assembly HelloWo ... -
代码段:ASCII to Unicode
2009-04-17 10:44 7751: private string Co ... -
Get countries from system
2009-05-08 16:02 7951: using System; 2: usi ... -
[Tips]:Read value from Resource file in C#
2009-05-18 16:18 10281: //Namespace refer ... -
C#拾遗系列(1):委托
2008-06-11 14:43 668一、委托概述 委托具有以下特点: 委托 ... -
C#拾遗系列(2):属性
2008-06-11 14:54 5981. 这里主要演示属性的继承和覆盖 2. 把属性理解为方法 ... -
C#拾遗系列(3):构造函数
2008-06-11 15:19 6291. 主要演示构造函数的继承 ... -
C#拾遗系列(4):索引器
2008-06-11 15:30 5901. 概述 索引器允许类或结构的实例就像数组一样进行索引。索引 ... -
C#拾遗系列(5):泛型委托
2008-06-14 17:25 675using System; using System.Col ... -
C#拾遗系列(6):迭代器
2008-06-14 23:03 7081. 示例: using System; using Sys ...
相关推荐
在这个官方教程中,我们将深入探讨.NET Windows编程的一个关键领域——多线程编程。多线程能力使得应用程序能够同时执行多个独立的任务,从而提高程序的效率和响应性,特别是在处理耗时操作时。 在Windows编程中,...
总之,`ManualResetEvent`是C#中进行线程同步的重要工具,它提供了灵活的控制机制,使得开发者能够有效地管理和协调多线程程序的行为。通过理解和熟练运用,我们可以编写出更稳定、高效的多线程应用。
《C#多线程编程实战(原书第二版)源码》是一本深入探讨C#中多线程技术的专业书籍,其源码提供了丰富的实践示例,帮助读者掌握并发编程的核心概念和技术。在C#中,多线程是实现高性能、响应式应用程序的关键组成部分...
"大漠多线程模板"是一个专门针对C#开发的多线程处理框架,它为开发者提供了便捷的方式来管理和优化多线程应用。这个框架由知名开发者"大漠"创建,旨在简化复杂的并发编程,提高代码的可读性和可维护性。 多线程允许...
在C#编程中,多线程是一个至关重要的概念,尤其在现代高性能应用和并发处理中。本书《C#多线程编程实战》的源代码旨在帮助开发者深入理解并实践多线程技术。以下是对源代码中涉及的关键知识点的详细解释: 1. **...
在多线程编程中,`ManualResetEvent`是.NET框架提供的一个同步原语,用于控制多个线程之间的执行顺序。它是一种等待句柄,能够实现线程间的同步与通信,尤其适用于需要显式控制线程唤醒场景。 #### 1. 基本概念 `...
C#多线程是.NET框架中的一个重要特性,它允许开发者在同一时间内执行多个任务,从而提高应用程序的效率和响应性。在处理大量数据、实现并发操作或进行后台处理时,多线程技术尤其有用。本参考手册将深入探讨C#中的多...
在编程领域,多线程是实现并发执行任务的关键技术,特别是在C#这样的语言中,它提供了丰富的多线程支持。本文将深入探讨C#中的多线程实例,以帮助开发者理解如何有效地利用多核处理器资源,提高程序的执行效率。 多...
在.NET框架中,C#语言提供了强大的多线程支持,使得开发者可以充分利用现代多核处理器的优势,实现并行处理和高效能编程。本资源包含六个C#.NET多线程的实例,涵盖了多线程的基本使用到更高级的概念,如线程互斥。...
.NET框架为开发者提供了丰富的多线程支持,使得在Windows应用程序中实现并发操作变得简单而高效。本教程将深入探讨.NET多线程编程的核心概念、关键技术和最佳实践。 一、线程基础 1.1 线程定义:线程是程序执行的...
在C#编程中,多线程是一个至关重要的概念,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应性。对于初学者来说,理解并掌握多线程是提升编程技能的关键步骤。以下是对"C#多线程笔记"中可能包含的知识点...
在编程领域,多线程是实现并发执行任务的关键技术,特别是在C#这样的多平台支持的语言中。C#多线程允许程序同时执行多个独立的任务,从而提高应用的响应速度和性能。以下是对C#多线程进行详细讲解的知识点: 1. **...
在C#编程中,多线程是一个核心概念,特别是在现代计算环境中,它允许程序同时执行多个任务,提高程序效率和响应性。以下是对标题和描述中提到的C#多线程知识点的详细解释: 1. **线程创建**:C#提供多种方式创建...
本资源“C#.NET多线程实例6个”涵盖了多线程的基本使用以及更高级的概念,如线程互斥,这将帮助开发者深入理解并有效地应用多线程技术。 1. **多线程基本使用**:在C#中,创建和管理线程主要通过`System.Threading`...
在.NET框架中,C#语言提供了强大的多线程支持,使得开发者可以充分利用现代多核处理器的优势,实现并行处理和高效编程。以下是对标题和描述中提到的C#.NET多线程实例进行的详细解析: 1. **多线程基本使用**: 多...
在.NET框架中,C#语言提供了强大的多线程支持,使得开发者可以充分利用现代多核处理器的优势,实现并行处理和优化应用程序性能。本资源包含六个C#.NET多线程实例,涵盖了多线程的基本使用以及高级特性,如线程互斥,...
在C#编程中,多线程是一项核心技能,它允许程序同时执行多个任务,从而提高应用程序的效率和响应性。本示例中的“C#多线程实现简单的任务管理器”是一个很好的学习资源,旨在帮助初学者理解多线程的概念及其在实际...
在这个名为“多线程实验_1”的项目中,我们主要探讨了四种关键的多线程操作:AutoResetEvent、ManualResetEvent、Thread.Join()以及委托多线程回调。下面将对这些知识点进行详细的解释和探讨。 首先,`...
### C#多线程学习详解 #### 一、多线程的基本概念 ##### 1. 什么是进程? 进程是程序的一次动态执行过程,它包含了正在运行的程序所需的内存、系统资源以及执行上下文。简单来说,当你启动一个程序时,操作系统会...
在VB(Visual Basic)编程环境中,多线程是一种高级编程技术,它允许应用程序同时执行多个独立的任务或子任务,从而提高程序的响应速度和效率。VB6及更高版本支持多线程,使得开发者可以利用多核处理器的优势。下面...