《C#多线程编程实战(原书第2版)》——2.7 使用CountDownEvent类
2023-09-11 14:16:11 时间
本节书摘来自华章出版社《C#多线程编程实战(原书第2版)》一书中的第2章,第2.7节,作者(美)易格恩·阿格佛温(Eugene Agafonov),黄博文 黄辉兰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.7 使用CountDownEvent类本节将描述如何使用CountdownEvent信号类来等待直到一定数量的操作完成。
2.7.1 准备工作为了学习本节,你需要安装Visual Studio 2015。除此之外无需其他准备。本节的源代码放置在BookSamplesChapter2Recipe6目录中。
2.7.2 实现方式请执行以下步骤来了解CountDownEvent类的使用:
1.启动Visual Studio 2015。新建一个C#控制台应用程序项目。
2.在Program.cs文件中加入以下using指令:
![cd3b121c82112023c94dbfebec1a74aee8ade2f6](https://yqfile.alicdn.com/cd3b121c82112023c94dbfebec1a74aee8ade2f6.png)
3.在Main方法下面加入以下代码片段:
![bf30f697ba8770f5e51453e46e3c78637bcfaad0](https://yqfile.alicdn.com/bf30f697ba8770f5e51453e46e3c78637bcfaad0.png)
![230d95a06350f2a4cef097de1dff67443e583597](https://yqfile.alicdn.com/230d95a06350f2a4cef097de1dff67443e583597.png)
4.在Main方法中加入以下代码片段:
![2457eb43883ceb0ab125208995891c03e8b14a9a](https://yqfile.alicdn.com/2457eb43883ceb0ab125208995891c03e8b14a9a.png)
5.运行程序。
2.7.3 工作原理当主程序启动时,创建了一个CountdownEvent实例,在其构造函数中指定了当两个操作完成时会发出信号。然后我们启动了两个线程,当它们执行完成后会发出信号。一旦第二个线程完成,主线程会从等待CountdownEvent的状态中返回并继续执行。针对需要等待多个异步操作完成的情形,使用该方式是非常便利的。
然而这有一个重大的缺点。如果调用_countdown.Signal()没达到指定的次数,那么_countdown.Wait()将一直等待。请确保使用CountdownEvent时,所有线程完成后都要调用Signal方法。
「Java并发编程实战」之对象的共享 本系列博客是对《Java并发编程实战》的一点总结,本篇主要讲解以下几个内容,内容会比较枯燥。可能大家看标题不能能直观的感受出到底什么意思,这就是专业术语,哈哈,解释下,术语(terminology)是在特定学科领域用来表示概念的称谓的集合,在我国又称为名词或科技名词(不同于语法学中的名词)。术语是通过语音或文字来表达或限定科学概念的约定性语言符号,是思想和认识交流的工具。我就用白话文来给大家解释下这些术语。
《C#多线程编程实战(原书第2版)》——2.4 使用SemaphoreSlim类 本节书摘来自华章出版社《C#多线程编程实战(原书第2版)》一书中的第2章,第2.4节,作者(美)易格恩·阿格佛温(Eugene Agafonov),黄博文 黄辉兰 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
相关文章
- C#中的线程(三) 使用多线程
- C#/.NET Core跨平台分布式微服务/DDD领域驱动架构设计VIP实战
- C# winform 学习(三)
- C#编程总结(四)多线程应用
- 重学c#系列——盛派自定义异常源码分析(八)
- [通信] C#多线程Socket-文件传输
- [通信] C#多线程Socket-文件传输
- C# 多线程参数传递
- C# WinForm多线程开发(二) ThreadPool 与 Timer
- C# 识别url是否是网络路径
- C# WinForm多线程开发(三) Control.Invoke
- C# Graphics中有关绘图质量的几个Mode
- C# 多线程网络爬虫
- C# WinForm多线程开发(二) ThreadPool 与 Timer
- C# 对象比较(值类型、引用类型)
- C# WinForm多线程开发(三) Control.Invoke
- C#去水印软件源代码
- C# 多线程
- C#中的Form,textBox,Bitmap,PictureBox,Button,WebBrowser
- (2)C# 多线程更新界面的错误方法
- 9.5 在 C# 中使用 F# 库
- CSharp(C#)语言_第三章(方法)
- C# WinForm程序中,使用多线程,在关闭窗体时 怎么关闭窗体的所有线程,使程序退出。
- C#多线程与异步
- C#面向对象的23种设计模式介绍