自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

讲述工作、生活、技术中的日常与感悟。

主业C#,也会点Android。讲述工作、生活、技术的日常与感悟。

  • 博客(78)
  • 收藏
  • 关注

原创 C# BS方向 该如何规划学习?【学习路线指南】

C#学习路线指南花费了几天时间整理了C#学习路线图,可以说是纯野生C#程序员成长路线规划,在这里分享下,希望可以帮助到想从事C#开发的同学们。本人阅历尚浅,有些知识点可能分享不正确,希望广大网友评论区补充,我会同步修正更新。题记最近自己一直在想,一个初学者刚开始应该学些什么,该学习到哪种程度找工作才不成问题,才能在做项目时游刃有余不被Bug所困住。是不是每一个初学者在刚开始学习任何一门编程语言的时候,都会有这样的疑问,都觉得无从下手,没有头绪。反正我当时确实有这样的困惑,在刚开始接触编程的时候,

2021-07-25 17:29:16 11553 6

原创 毕业四年,我当初是如何走上编程这条路的!

题记感概万千,毕业已达4年之久。想起在大学时期学习编程的事情,感觉很有意义,在此记录回顾一下。希望自己初心未变,勇往向前现状与过去20210706 目前的我是在天津一家公司做软件开发,主要做C#桌面端开发,有时还写点Android,但主技还是C#、ASP.NET。从毕业实习到现在一直在这家公司,是不是很吃惊。毕竟在我同学都已经换了不下3个单位的时候我还在刚开始的这家公司里,他特比吃惊,觉得不可思议。17年在大四第二学期时,我们班很多同学都已经离校,这也是学校当时默许的事情。其实也就是为了提

2021-07-10 23:03:41 388 4

原创 C# 中的File类

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言大家好,我是阿辉。昨天和大家一起学习了C#中处理JSON格式数据插件Newtonsoft.dll的用法,想必在以后的业务中处理JSON格式数据时,都会游刃有余。今天咱们一起来看下在C#中是如何处理文件的,关于文件的操作都有那些方法。在C#中关于文件的操作都在命名空间System.IO下,当使用File类时,VS会自动引用其System.IO,如下面代码一样。using System.IO;那么在此命名空间下都有那些方法和属性。具体可以看.

2022-02-28 22:54:57 3577

原创 C#处理JSON格式数据

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言大家好,我是阿辉。这几年在编程行业要是说哪个方向的语言发展迅速,那必须是属于前端。前端新的框架层出不穷,写法也很多。但是有一种是不变的,就是当需要和后端进行数据传输交换的时候,一直在使用JSON格式进行传输。日常编码过程中,当需要写BS端的程序就需要处理数据的传输问题。目前很多时候都是使用的传输格式是JSON,那么在C#中是如何处理数据的,又如何将数据转换为JSON格式。今天咱们就来一起看看组件Newtonsoft.dll。它是一个第三方组.

2022-02-27 21:38:43 3650 1

原创 C#导入导出.CSV文件

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言大家好,我是阿辉。今天和大家一起来看看,C#在处理流文件时,我们最常用的导出Excel文件是如何操作的。在日常的业务编码过程中,很多时候需求就要求导出Office能打开的表格文件。我们一般的做法是使用Office组件的帮助,或者更优秀一点的是使用NPOI组件来导出(摆脱其Office组件的限制)。但是这两种导出组件都有或多或少的弊端。比如NPOI软件,当数据量过大超过60W的时候,在组件内部会出现溢出问题。目前还无解,只能换一个别的组件或者对.

2022-02-26 16:23:34 1988 1

原创 C#使用WebBrowser引入百度地图

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言今天有空和大家一起研究研究在WinForm端如何使用百度地图公开的信息利用WebBrowser组件来加载显示出地图。首先仔细阅读百度地图的SDK信息,未提供在C#端的SDK信息,那么只能通过在WebBrowser中是通过加载网页html的形式来显示的。此时用到的百度地图JavaScript API v3.0,地址如下:https://lbsyun.baidu.com/index.php?title=jspopular3.0百度地图SDK.

2022-02-25 23:27:45 1436

原创 NPOI在Word中的简单用法汇总

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言今天这篇文章,咱们来看看使用NPOI操作Word都有哪些方法。对于Word文件,前天的文章介绍了要生成一个Word文件需要五步。1、初始化文档类XWPFDocument;2、场景主标题段落3、自定义内容4、创建页脚5、写入文件创建文档文档在NPOI用XWPFDocument类进行操作,首先需要实例化一个XWPFDocument类,用于后期生成文档类的操作。XWPFDocument m_Docx = new XWPFDocu..

2022-02-24 21:42:16 2936 2

原创 NPOI在Excel中的简单用法汇总

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言前两天和大家一起了解了在C#中利用NPOI操作Excel和word文件的方法,只是简单的介绍了它是如何导出Excel文件和Word文件的,今天咱们进入里面,看看具体都有哪些功能性的东西。今天先从Excel文件开始。> 1、声明XSSFWorkbook实例。>> 2、利用声明并实例化的工作簿创建其工作表。>> 3、写入Excel表头和表数据>> 4、将实例化的工作簿写入流文件中。我们可以知.

2022-02-23 18:56:10 568

原创 C#使用NPOI导出Word文件

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言昨天和大家一起学习使用NPOI导出Excel文件的操作,今天咱们看看这个插件在Word中是如何操作的。如何可以将数据快速的导出到Word中。在操作Word的时候,需要用到的组件是XWPFDocument类,通过它来操作将数据写入Word中,其中可以对Word进行简单的设置,比如添加图片,添加表格,字体大小颜色做调整等。具体步骤如下:1、初始化文档类XWPFDocument;2、场景主标题段落3、自定义内容4、创建页脚5、写入文件.

2022-02-22 20:45:13 2430 2

原创 C#使用NPOI导出Excel文件

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言今天咱们一起来看看在C#中如何使用NPOI第三方控件进行数据的导出。关于NPOI插件网上资料很多,大家感兴趣的可以去看看。本文使用的版本是NPOI 2.5.1。大家可在包管理器NuGet或者下面网址进行下载。http://npoi.codeplex.com/快速下载地址://files.cnblogs.com/files/netxiaohui/npoi.2.5.1.zip很多时候,我们在进行数据导出到Excel文件时,在window.

2022-02-21 18:14:36 1788

原创 C#中的结构

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言今天和大家一起来看看C#中的结构。在日常的编码过程中,对于结构的应用还是比较少的。但是当操作到一些对数据结构比较敏感的程序时,就需要使用结构这种数据类型.结构是程序员定义的数据类型,和类类似。它们有数据成员和函数成员。但是二者也有很多区别。1、类是引用类型而结构是值类型。2、结构是隐式密封的,这意味着它们不能被派生。struct Point { public int x; public int y;}比如上面的程序.

2022-02-20 21:05:20 478

原创 C#中的表达式和运算符

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言今天和大家一起学习下C#中的表达式和运算符,都是很基础的知识点。在日常的编码过程中,对于表达式和运算符我们每天都在使用。比如像下面的代码int age=27;就是一种表达式。运算符是一个符号,它表示返回单个结果的操作。操作数是指作为运算符输入的数据元素。一个运算符会将操作数作为输入,执行某个操作,基于该操作返回一个值。表达式是运算符和操作数的字符串,可以作为操作数的结构有字面量、常量、变量、方法调用、元素访问器、其他表达式等。其中表达式.

2022-02-19 22:19:46 201

原创 C#中的枚举

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言今天咱们一起学习下枚举。在日常的业务编码过程中,由于对某些业务或状态进行区分,就使用到了C#中的枚举概念。枚举和之前学习的类或结构一样,是由程序员定义的类型。枚举是值类型,可直接存储数据;枚举只有一种类型成员,命名的整数值常量。 /// <summary> /// 车子分类 /// </summary> enum CarCategory { Bik.

2022-02-18 22:54:18 397

原创 C#中的数组

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言前面的文章和大家一起看了C#中的异常,今天一起学习下C#中最基本的数据结构,数组的用法。数组实际上是由一个变量名称表示的一组同类型的数据元素。每个元素通过变量名称和一个或多个方括号中的索引来访问。在实际的业务编码中,一些简单的数据处理,我们可以声明为数组进行处理。 int[] Ages = new int[4];数组数组的重要定义元素 数组的独立数据项称为元素。数组的所有元素必须是相同类型的或继承自相同的类型。秩/维度 数组可.

2022-02-16 21:40:06 216

原创 C#中类的异常处理

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言日常编码过程中,最重要的技能不是说你学会使用很多最新的编程技术或者做出一个高大上的系统。而是你在写代码过程中,对异常的处理,是否系统可以稳定,健壮。对于异常的处理在C#中是通过try/cath机制来捕获的,接下来我们一起来看看。异常是程序中的运行时错误,它违法了系统约束或应用程序约束,或出现了在正常操作时未预料的情形。比如对于某些变量的非正常赋值或者在参与运算操作时出现错误等。异常关于异常,在C#中通过try语句和处理异常机制类保证异常的.

2022-02-15 21:13:02 455

原创 C#中类的override和virtual

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言昨天和大家一起学习了类的派生,知道派生类和基类的区别。今天咱们一起看看派生类和基类的虚方法和覆写方法是如何使用的。我们使用基类引用访问派生类对象时,得到的是基类的成员。当使用虚方法时,可以得到派生类的成员和函数。 class Ahui:InfoBase { public string Name = "阿姨"; public string GetInfo() { retu.

2022-02-14 16:40:24 1084

原创 C#中的类继承

欢迎您成为我的读者,希望这篇文章能给你一些帮助。前言在日常的程序编码工作中,我们的最终目标是完成公司交给自己的开发任务,核心目标是写出好代码。那么什么是好代码?高内聚,低耦合想必从事编码工作的我们,基本都听说过这句话。那么什么样的代码是高内聚,又如何低耦合呢。今天咱们就来了解下在C#这个高级语言中,是通过那些形式来表现的。在目前的高级语言中,这三个特点是共通的,也是我们日常编码中要经常使用的。就是封装、继承、多态。我们先来看看继承类的继承通过继承我们可以得到一个新的类,新类可以自.

2022-02-13 21:47:27 454

原创 WinForm中TreeView增加右键导出按钮

“欢迎你成为我的读者,希望这篇文章能给您一些帮助。”前言今天突然有个需求,想给目前在WinForm窗体上的TreeView增加一个右键导出Excel的功能,当前的TreeView使用就只是单纯的分3层展示加载的数据,没有做任何的数据保存操作。对于TreeView控件来说,本身是没有右键操作的,需要添加控件contextMenuStrip来实现。给WinForm中的TreeView控件增加右键导出按钮实现成功的效果如下:由于直接给TreeView添加contextMenuStrip不能实现只在父

2022-02-11 21:10:15 8328

原创 C#中的类

前言今天咱们简单复习下C#中类的相关知识。在刚开始学习编程的时候,都是从面向过程的C语言开始的,它有个特征就是有其执行顺序,先干这,再干那,很直接,也很好理解。但现在学习C#或者JAVA等面向对象的语言,它的特征就是把事物或业务进行抽象化描述,而在这个抽象化的过程中就是用类来表征或者说代表这个抽象的内容。程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,也就是所谓的类。C#中的类类是一个能存储数据并执行代码的数据结构。它包含数据成员和函数成员。数据成员:存储与类或类相关的数据。(表示其

2022-02-10 22:12:32 1262

原创 C#中的数据字典Dictionary

前言今天上午和往常一样在网上冲浪,看到码甲哥微信群里面在聊一个面试题,比较有意思,这里简单分享下结论中的Dictionary字典。有50w个int类型的数字,现在需要判断一下里面是否存在重复的数字,请简要说明下。假如这个题目让我做,第一感觉可能直接向两个for循环,简单做个判断就解决了。可是看到几个大佬的讨论,才发现是我知识浅薄了。这道题难道考的就是对业务代码循环的应用吗?肯定不是的。我们知道,在验证一段代码或者一个程序算法的完美指标是空间复杂度和时间复杂度。通过这两个指标来进行评判。空间复

2022-02-09 17:01:21 1295

原创 C#中的语句

寄语接下来几篇文章,将带领大家一起简单回顾下C#中常规的语法,也是平常我们在编码过程中都使用的。今天来介绍下C#中的语句。一般科班出身的程序猿们大家第一个学习语言基本都是C语言,C语言里面在刚开始就介绍了语句。C#中介绍的语句和C中的基本一样(这也是我推荐大家开始学习C#或JAVA,先学习C语言的原因。一通百通嘛)。语句语句是描述某个类型或让程序执行某个动作的源代码指令。分为声明语句、嵌入语句、标签语句。如果细说的话里面还有空语句,块语句,简单语句等等。简单语句由一个表达式和后面跟着的分号组成

2022-02-08 18:59:37 223

原创 C#中的命名空间和程序集

前言今天这篇文章和大家一起学习下C#语言下的命名空间和程序集。在日常的编码工作中,我们对命名空间和程序集都不会很陌生。在创建项目文件时,IDE自动会为我们创建好一个大的命名空间和程序集。大多数业务代码都是在解决方案下各自的命令空间里进行编码的。编译器接受源代码文件并生成名称为程序集的输出文件。目前看到的所有程序中,大部分都声明并使用它们自己的类。日常编码中也可能会用到很多来自其它程序集的类或类型,这时候可能来在BCL、第三方类库、开源类库等。这些程序集被成为类库,也可以自己创建属于自己的业务类库,

2022-02-07 22:35:14 700

原创 C#中的类型转换

前言前几篇文章中经常说到强制类型转换,就是可以将派生类对象强制转换为基类对象的做法或者通过as运算符进行的转换。今天我们就来一起简单了解复习下在C#中都有哪些类型的转换。要理解转换很容易,日常的开发编码过程中,由于变量类型的不同我们可能会根据业务的变更会进行变量值之间的转换。这里就会出现类型转换。比如Int型变量转换为String类型等等。这里转换是接受一个类型的值并使用它作为另一个类型的等价值的过程,转换后的值应和源值一样。如下就是典型的强制类型转换 short temp = 5; sbyt

2022-02-06 18:13:27 1606

原创 C#中的协变和逆变

前言这篇文章简单说说C#中的协变和逆变。在C#编程中,由于存在类型之间的强制转换,很容易会出现所谓的类型可变性说法,存在协变、逆变、不变三种。就比如前一篇文章介绍的泛型概念,如果创建了泛型类型的实例,编译器会接受泛型类型声明以及类型参数来创建构造类型。但是在日常使用过程中,我们可能会将派生类型分配给基类型的变量,有时候会出现错误。这里就存在一个赋值兼容性问题。每一个变量都有一种类型,可以将派生类对象的实例赋值给基类变量(好比之前子类声明的变量可以赋值给父类声明的变量一样)。如下所示:

2022-02-05 22:59:04 303

原创 C#中泛型约束的具体用法

前言上一篇博文简单介绍了泛型的约束,说是通过where<>来实现具体委托占位符的约束。那么约束又有什么类型和次序呢。这篇文章咱们一起看看。目前共5种类型的约束。类名:只有这个类型的类或从它继承的类才能用作类型实参class:任何引用类型,包含类,数组,委托,接口都可以用作类型实参struct:任何值类型都可以做类型实参接口名: 只有这个接口或实现接口的类型才能用作类型实参new(): 任何带有无参公共构造函数的类型都可以用作类型实参在实现过程中,最多只能有一个主约束且必须放

2022-02-04 22:29:14 917

原创 C#中泛型的用法

前言上一篇文章简单介绍了泛型,接下来一起看看泛型在C#中具体该如何用。具体泛型的使用有如下步骤:声明泛型类、创建构造类型、创建变量和实例。其实和类的使用一样,只是泛型在初始时,是不指定某类型的,而在使用过程中,确定具体类型。泛型的用法声明泛型类 class Ahui<T,T2> { public T Age; public T2 Name; }创建构造类型其实就是声明完泛型类,在使用

2022-02-03 22:19:46 3183 1

原创 C#中的泛型

前言这篇文章带领大家一起学习学习泛型。我们目前使用的语言结构,可以建立多种不同类型的强大对象。很多时候是声明类,封装需要的行为之后创建类的实例对象。目前为止,所有类声明用到的类型都是特定类型。有可能是我们自己定义的,有可能是BCL定义的。其实有时候我们可以把类的行为提取或重构出来,使之不仅能应用到它们编码的数据类型上,而且还能应用到其他类型上。这时就有了泛型的概念,它就是用来解决这样的问题的。泛型是专门为多段代码在不同的数据类型上执行相同指令的情况专门设计的。用白话说就是,设计一个泛型类型代码

2022-02-02 22:38:54 475

原创 C#中接口的用法

C#中接口的用法多线程 接口C#编程Winform

2022-02-01 22:42:57 2328 1

原创 C#中的接口

前言在日常的开发中,如果需要提炼一些公用的方法有一种办法,就是使用接口来定义,其它拥有这些方法的类需要实现这些接口,这样就可以使用。那么今天咱们来一起学习下接口。什么是接口接口是指定一组函数成员而不实现它们的引用类型,所以只能类和结构来实现接口。要实现一个接口,类或结构必须做两件事情必须在基类列表后面列出接口名称必须为接口的每一个成员提供实现关于接口的声明有以下几点需要注意接口的声明不能包含数据成员和静态成员接口声明只能包含方法、属性、事件、索引器这些类型的非静态成员函数接口声明

2022-01-31 18:39:36 1111

原创 C#中委托的用法

前言大家好,我是阿辉。昨天大家和我一起学习了,C#中的委托,了解了什么是委托,也简单写了一个委托的完整实例。那么为什么会出现委托!委托该如何使用!委托有如下好处:委托实现了将方法当作参数使用。在两个不能直接调用的方法中作为桥梁。比如在多线程中的跨线程的方法调用就得用委托。当不知道方法具体实现什么时使用委托。如事件中使用委托。委托的用法给委托赋值由于委托是引用类型,可通过给它赋值来改变包含在委托变量中的引用,旧的委托将被GC回收处理。 //给委托赋值 testOne

2022-01-30 22:11:37 3799

原创 C#中的委托

前言前一篇文章介绍了事件,在事件中说到事件也是一种特殊的委托。那么这篇文章咱一起学习下委托。什么是委托?委托可以认为是持有一个或多个方法的对象。当委托被执行时,它持有的方法也会被执行。委托不是对象,是一种类型。在使用时,委托类型是需要声明委托变量的。委托和类一样,是一种用户自定义的类型,但类表示的是数据和方法的集合,而委托则持有一个或多个方法,以及一系列预定义操作。步骤:1、声明委托类型。2、使用该委托类型声明一个委托变量。3、创建委托类的对象,把它赋值给委托变量。4、可为委托对象增加

2022-01-29 22:37:46 254

原创 C#中利用事件来传递数据(EventArgs)

前言前文介绍在GUI编程中的事件,其中说到EventHandler委托类型在声明时,必须有两个参数变量,第一个是object类型,第二个是EventArgs类型。对于EventArgs类型,有2个作用。当不需要使用事件传递参数时,此变量传递null即可;当需要使用事件传递参数时,该类型当作基类使用,可传递其的子类(存储数据),用于传递数据。在事件中利用EventArgs传递数据那么我们修改之前的例子,阿辉继续订阅报社的报纸,当报社发报后,阿辉可第一时间进行阅读。修改后变为报社发报的文章里面包含阿辉名

2022-01-28 22:04:30 13672 2

原创 C#中GUI编程的标准事件

前言大家好,我是阿辉。昨天的文章,带大家简单学习C#中的事件,了解订阅者和发布者之间的逻辑关联,也通过小案例进行实际操作,可以看到具体的输出结果。目前在工作中,使用Winform桌面开发比较多,很多时候就会用到事件,此时这里的事件用法有一个俗称叫GUI编程。在程序运行时,它可以在任何时候被打断,比如按钮点击,按下按键或系统定时器。在这些情况发生时,程序需要处理事件然后继续其他事情。在Windows GUI编程中经常会用到程序事件的异步处理。什么是GUI中的标准事件这种程序事件.NET框架提供一

2022-01-27 21:32:42 808

原创 C#中的事件

前言大家好,我是阿辉。在我们日常的软件开发工作中,很容易用到事件机制,简单举例就好比民国时期订阅报纸机制一样,当订阅者在报社订阅该报社发行的报纸一样,只需要告诉报社快递到哪里即可,每次当报社发报时,订阅人都会在同一时间地点收到订阅的报纸,不会出现遗漏等情况。这也就是编程过程中事件所要解决问题。那么我们一起来学习下在C#语言下,事件到底该如何实现?什么是事件以前在设计模式学习的过程中,了解到了订阅者/发布者模式,它解决的是当一个特定事件程序发生时,程序的其它部分得到该事件已经发生的通知。在这种模

2022-01-26 22:35:01 275

原创 C#中的网络通信Socket

前言在传输层使用的传输协议是TCP和UDP协议。那么在编程的实现过程中就需要使用Socket来实现所谓的数据传输。TCP:传输控制协议/因特网互联协议,又叫网络通讯协议。简单解释就是TCP控制传输数据,负责发送传输的问题,一旦有问题就发出信号要求重新传输,直到所有数据安全正确地传输到目的地,而IP是负责给因特网中每台PC定义一个地址,便于标记后传输的。网络通信中的Socket在网络通信中实现Socket得需要两个端口,客户端和服务端。在服务端实时接收等待客户端的连接,二者连接成功后可双向发送数据。

2022-01-26 09:43:48 400

原创 C#中的串口通信SerialPort

前言大家好,我是阿辉。今天这篇文章带大家学习下C#中的串口通讯。在日常的开发工作中,如果工作内容是CS方向的同学应该很容易接触到串口通讯方面的业务需求。那么也就很容易想到C#中SerialPort类,它就是专门来处理串口通讯相关的。了解什么是串口通讯串口通讯是指外设和计算机间通过数据信号线,地线,控制线等,按位进行传输数据的一种通讯方式。这种通讯方式使用的数据线少,在远距离通信中可以节约成本,但其传输速度比并行通讯慢。串口是计算机上一种非常通用的设备通讯协议。大多数计算机包含两个基于RS-232

2022-01-24 22:42:43 7656 1

原创 什么是有限状态机

前言大家好,我是阿辉。今天咱们来一起学习有限状态机,在博主日常的工作中,难免会和硬件打交道,比如实时读取设备中的采集数据,接收硬件发送来的采集参数,采集响应命令等。很多时候会采用有限状态机模型来确保接收数据的完整性。那么接下来让我们一起来看看什么是有限状态机。什么是有限状态机比较官方的说法是:有限状态机是一种用来进行对象行为建模的工具,作用是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在计算机中,有限状态机被应用于建模应用行为,硬件电路系统设置,软件工程,编译器,网

2022-01-23 23:15:51 2525

原创 C#多线程开发-并发集合中的ConcurrentQueue

前言大家好,我是阿辉。上一篇博文简单介绍了C#中支持并发的数据字典,简单举例说明比较了常规集合与ConcurrentDictionary的读写速度。下来简单介绍其中一个线程安全队列ConcurrentQueue;ConcurrentQueue队列我们不陌生,在数据结构这门课中就有了解过,是一种先进先出的对象集合。平时在我们需要对各项拥有先进先出的访问时,就需要使用队列来实现,当像队列里面添加元素时叫入队,移除元素时叫出队。ConcurrentQueue是一个高效的线程安全的队列,是.Net Fr

2022-01-20 22:05:03 2212 1

原创 C#多线程开发-使用并发集合

前言大家好,我是阿辉。在C#语言中当需要处理并发的场景时,就需要程序员使用最合理的数据结构。那么哪些数据结构是支持和可以在并行计算中被使用的呢。首先这些数据结构具备可伸缩性,尽可能地避免锁(会造成多个线程的等待,防止资源竞争),同时还能提供线程安全的访问。在.NET Framework4.0中引入了System.Collections.Concurrent命名空间,其中就包含几个数据结构。ConcurrentQueusConcurrentDictionaryConcurrentStack.

2022-01-19 10:21:00 800

原创 C#多线程开发-线程间通讯

前言在实际的开发过程中,经常需要使用很多子线程来实现某些功能需求,有时候当主线程分配的任务过多或做一些需要长时间等待和响应的工作时单独使用子线程来实现可能更好,可是当我们程序中的子线程太多的时候,有些需求就需要在线程之间进行通讯或者传递消息。那么对于C#来说,是如何实现线程间通讯的。一、AutoResetEvent介绍AutoResetEvent表示信号量,可用于线程间发送信号互相通讯,线程通过调用WaitOne来等待信号。如果AutoResetEvent为非终止状态,则线程会被阻止,并等待当前控

2022-01-18 22:40:23 7409 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除