`
wangdeshui
  • 浏览: 255671 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[tips]: 多线程 ManualResetEvent

阅读更多

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:  
分享到:
评论

相关推荐

    微软官方教程:.NET Windows编程系列课程(15):多线程编程

    在这个官方教程中,我们将深入探讨.NET Windows编程的一个关键领域——多线程编程。多线程能力使得应用程序能够同时执行多个独立的任务,从而提高程序的效率和响应性,特别是在处理耗时操作时。 在Windows编程中,...

    C#线程同步ManualResetEvent

    总之,`ManualResetEvent`是C#中进行线程同步的重要工具,它提供了灵活的控制机制,使得开发者能够有效地管理和协调多线程程序的行为。通过理解和熟练运用,我们可以编写出更稳定、高效的多线程应用。

    c#多线程编程实战(原书第二版)源码

    《C#多线程编程实战(原书第二版)源码》是一本深入探讨C#中多线程技术的专业书籍,其源码提供了丰富的实践示例,帮助读者掌握并发编程的核心概念和技术。在C#中,多线程是实现高性能、响应式应用程序的关键组成部分...

    大漠多线程模板_大漠_大漠多线程_

    "大漠多线程模板"是一个专门针对C#开发的多线程处理框架,它为开发者提供了便捷的方式来管理和优化多线程应用。这个框架由知名开发者"大漠"创建,旨在简化复杂的并发编程,提高代码的可读性和可维护性。 多线程允许...

    C#多线程编程实战 源代码

    在C#编程中,多线程是一个至关重要的概念,尤其在现代高性能应用和并发处理中。本书《C#多线程编程实战》的源代码旨在帮助开发者深入理解并实践多线程技术。以下是对源代码中涉及的关键知识点的详细解释: 1. **...

    ManualResetEvent的用法

    在多线程编程中,`ManualResetEvent`是.NET框架提供的一个同步原语,用于控制多个线程之间的执行顺序。它是一种等待句柄,能够实现线程间的同步与通信,尤其适用于需要显式控制线程唤醒场景。 #### 1. 基本概念 `...

    c#多线程参考手册 多线程

    C#多线程是.NET框架中的一个重要特性,它允许开发者在同一时间内执行多个任务,从而提高应用程序的效率和响应性。在处理大量数据、实现并发操作或进行后台处理时,多线程技术尤其有用。本参考手册将深入探讨C#中的多...

    C# 多线程实例多线程实例多线程实例

    在编程领域,多线程是实现并发执行任务的关键技术,特别是在C#这样的语言中,它提供了丰富的多线程支持。本文将深入探讨C#中的多线程实例,以帮助开发者理解如何有效地利用多核处理器资源,提高程序的执行效率。 多...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例),可直接运行

    在.NET框架中,C#语言提供了强大的多线程支持,使得开发者可以充分利用现代多核处理器的优势,实现并行处理和高效能编程。本资源包含六个C#.NET多线程的实例,涵盖了多线程的基本使用到更高级的概念,如线程互斥。...

    .NET多线程编程教程,_NET多线程编程实例

    .NET框架为开发者提供了丰富的多线程支持,使得在Windows应用程序中实现并发操作变得简单而高效。本教程将深入探讨.NET多线程编程的核心概念、关键技术和最佳实践。 一、线程基础 1.1 线程定义:线程是程序执行的...

    C# 多线程笔记和示例讲解

    在C#编程中,多线程是一个至关重要的概念,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应性。对于初学者来说,理解并掌握多线程是提升编程技能的关键步骤。以下是对"C#多线程笔记"中可能包含的知识点...

    C#多线程_c#多线程_C#_多线程_

    在编程领域,多线程是实现并发执行任务的关键技术,特别是在C#这样的多平台支持的语言中。C#多线程允许程序同时执行多个独立的任务,从而提高应用的响应速度和性能。以下是对C#多线程进行详细讲解的知识点: 1. **...

    C#C#多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例)

    在C#编程中,多线程是一个核心概念,特别是在现代计算环境中,它允许程序同时执行多个任务,提高程序效率和响应性。以下是对标题和描述中提到的C#多线程知识点的详细解释: 1. **线程创建**:C#提供多种方式创建...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例)_26.rar

    本资源“C#.NET多线程实例6个”涵盖了多线程的基本使用以及更高级的概念,如线程互斥,这将帮助开发者深入理解并有效地应用多线程技术。 1. **多线程基本使用**:在C#中,创建和管理线程主要通过`System.Threading`...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例)(十分经典)

    在.NET框架中,C#语言提供了强大的多线程支持,使得开发者可以充分利用现代多核处理器的优势,实现并行处理和高效编程。以下是对标题和描述中提到的C#.NET多线程实例进行的详细解析: 1. **多线程基本使用**: 多...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例)

    在.NET框架中,C#语言提供了强大的多线程支持,使得开发者可以充分利用现代多核处理器的优势,实现并行处理和优化应用程序性能。本资源包含六个C#.NET多线程实例,涵盖了多线程的基本使用以及高级特性,如线程互斥,...

    C#多线程实现简单的任务管理器

    在C#编程中,多线程是一项核心技能,它允许程序同时执行多个任务,从而提高应用程序的效率和响应性。本示例中的“C#多线程实现简单的任务管理器”是一个很好的学习资源,旨在帮助初学者理解多线程的概念及其在实际...

    多线程实验_1

    在这个名为“多线程实验_1”的项目中,我们主要探讨了四种关键的多线程操作:AutoResetEvent、ManualResetEvent、Thread.Join()以及委托多线程回调。下面将对这些知识点进行详细的解释和探讨。 首先,`...

    C#多线程学习,学习多线程好资料。

    ### C#多线程学习详解 #### 一、多线程的基本概念 ##### 1. 什么是进程? 进程是程序的一次动态执行过程,它包含了正在运行的程序所需的内存、系统资源以及执行上下文。简单来说,当你启动一个程序时,操作系统会...

    VB 多线程源码

    在VB(Visual Basic)编程环境中,多线程是一种高级编程技术,它允许应用程序同时执行多个独立的任务或子任务,从而提高程序的响应速度和效率。VB6及更高版本支持多线程,使得开发者可以利用多核处理器的优势。下面...

Global site tag (gtag.js) - Google Analytics