随笔分类 -  C#

摘要:目录一 背景二 源码2.1 注意事项三 使用方法 一 背景 在很多时候我们在进行代码排查的时候需要在日志中记录代码的执行时间从而方便我们进行代码运行效率的执行,我们在日志中准确记录方法的执行时间,这样方便我们进行代码的排查,下面分享一个我们常用的记录方式,方便使用,而且最重要的是代码高效和简单。 二 阅读全文
posted @ 2023-11-24 11:07 Hello——寻梦者! 阅读(187) 评论(0) 推荐(0) 编辑
摘要:目录一 背景二 源码及分析2.1 源码展示2.2 源码分析2.2.1 定义ActionItemInfo2.2.2 定义AutoProcess属性2.2.3 分析ProcessQueuedActionItems方法 一 背景 在实际的开发过程中,我们经常有一种需求就是我们的任务需要放到线程池中进行执行 阅读全文
posted @ 2023-11-24 10:38 Hello——寻梦者! 阅读(57) 评论(0) 推荐(0) 编辑
摘要:目录一 背景二 代码分析1. ActionResult2 Task的扩展类TaskExtension2.1 Task中创建相互关联的Cancellation2.2 Task中等待特定的结果返回2.3 Task中等待执行结果的完成2.4 Task执行增加Timeout2.5 其它Task中使用的一些小 阅读全文
posted @ 2023-09-26 14:33 Hello——寻梦者! 阅读(197) 评论(0) 推荐(0) 编辑
摘要:一 背景 在上一篇中我们介绍了一个关于使用C#中的Queue来定义自己的消费队列,这篇文章我将再次使用Queue来定义另外一种消费队列,这个队列中会使用到System.Threading.Timer来定义一个10ms的Interval,和上一篇中产生数据一个个消费不同这篇文章中介绍的消费队列中消费定 阅读全文
posted @ 2023-03-12 19:47 Hello——寻梦者! 阅读(316) 评论(0) 推荐(0) 编辑
摘要:一 背景 在我们的工作中我们经常有一种场景就是要使用到队列,特别是对于这样的一种情况:就是生产的速度明显快于消费的速度,而且在多线程的环境下消息的生产由多个线程产生消息的消费则没有这种限制,通过使用队列这种方式能够很大程度上将多线程的问题通过入队的方式变成单个线程内的消息的聚合,然后通过单独的线程进 阅读全文
posted @ 2023-02-19 20:37 Hello——寻梦者! 阅读(546) 评论(0) 推荐(0) 编辑
摘要:背景 IOC容器是构建一个应用程序非常重要的组成部分,在很多的IoC-Invertion of Control,即控制反转,是一种程序设计思想,在彻底了解Ioc容器之前我们先要来理解一些重要的一些概念,有了这些概念你才能对整个Ioc容器有一个非常清晰地认知。 先初步了解几个概念: 依赖(Depend 阅读全文
posted @ 2021-09-13 22:33 Hello——寻梦者! 阅读(1217) 评论(0) 推荐(2) 编辑
摘要:背景 在C#中我们很多时候需要对一个对象进行深拷贝,当然如果已知当前对象类型的时候我们当然可以通过创建新对象逐一进行赋值的方式来进行操作,但是这种操作非常繁琐而且如果你在做一个顶层框架的时候要实现这样一个功能,并且深拷贝的方式复制的对象是一个object类型,这个时候这个方式就不再适用了,可能还有很 阅读全文
posted @ 2021-08-27 15:25 Hello——寻梦者! 阅读(2283) 评论(8) 推荐(3) 编辑
摘要:背景 在上篇中我们定义了两种通信协议基础的配置以及创建连接、重连机制、发送数据等等过程,在这篇文章中我们将重点来描述整个数据接收的过程,这个也是整个通信框架中非常重要的一个部分,在分析完整个过程后,本篇文章将贴出Communicator类的完整源码供分析文章使用。 接收过程 1.1 接收数据 我们先 阅读全文
posted @ 2021-06-27 15:59 Hello——寻梦者! 阅读(1146) 评论(0) 推荐(1) 编辑
摘要:背景 在使用C#进行开发的时候我们需要去和外部进行通信,而常见的通信协议主要是TCP和SerialPort和外部进行通信,在C#中我们可以使用一个通用的通信基类Communicator来将这两个集中到一个抽象基类中,这样我们就能实现和常用的外部系统进行通信,很多外部设备的厂家甚至提供了这两种协议同时 阅读全文
posted @ 2021-06-24 21:12 Hello——寻梦者! 阅读(2016) 评论(0) 推荐(0) 编辑
摘要:背景 在我们很多的业务代码中我们需要对原有的一些.NET 框架中的一些基础类型进行扩展才能满足我们具体的业务需求,这个时候我们就需要对其进行自定义扩展,今天的这篇文章主要介绍两种.NET中非常常见的扩展类型,第一种是一个带通知的List,第二种就是我们常用的字典类型的扩展,就是字典中的值是一个ILi 阅读全文
posted @ 2021-02-26 18:17 Hello——寻梦者! 阅读(503) 评论(0) 推荐(1) 编辑
摘要:背景 在很多时候我们代码中的一些逻辑操作并不能够硬编码到代码中,我们可能希望通过配置来完成这个操作,所以这个时候我们就需要有一些脚本语言能够处理这些操作,在C#语言中比较常见的就是通过引入NLua这个动态库来引入lua脚本语言从而达到灵活配置的目的,这篇文章主要是通过具体的实例来说明在C#中如何通过 阅读全文
posted @ 2021-02-25 09:55 Hello——寻梦者! 阅读(4431) 评论(0) 推荐(0) 编辑
摘要:一 背景 在上面的一篇文章中我们介绍了一个完整地基于消息发布和订阅的模型,这篇文章我将介绍一种简单的基于消息的发布和订阅模型,在这个模型中我们将通过构建一个Publisher类来完成对特定的事件和事件订阅进行封装,这个是一个更加轻量级别的方式,使用这个的主要目的是降低类之间彼此的耦合程度,从而方便代 阅读全文
posted @ 2021-02-06 22:10 Hello——寻梦者! 阅读(710) 评论(0) 推荐(0) 编辑
摘要:背景 最近在接手公司的一个老项目的时候发现打开软件界面的时候MenuItem的子项Items数据加载极其缓慢,造成点击界面的时候界面卡顿,最后分析原因是由于在读取XML的时候没有充分考虑到性能问题从而造成读取操作性能低下,后面经过优化后能够快速提高效率并最终解决界面卡顿的问题,这篇文章就将整个过程记 阅读全文
posted @ 2020-10-25 21:44 Hello——寻梦者! 阅读(579) 评论(0) 推荐(0) 编辑
摘要:背景 我们知道在.NET Framework中存在四种常用的定时器,他们分别是: 1 两个是通用的多线程定时器: System.Threading.Timer System.Timers.Timer 2 两个是专用的单线程定时器 System.Windows.Forms.Timer (Windows 阅读全文
posted @ 2020-10-24 21:40 Hello——寻梦者! 阅读(5671) 评论(3) 推荐(1) 编辑
摘要:在我们的开发过程中,我们经常会遇到这样的场景就是一个对象的其中的一些状态依赖于另外的一个对象的状态,而且这两个对象之间彼此是没有关联的,及两者之间的耦合性非常低,特别是在这种基于容器模型的开发中遇到的会非常多,比如Prism框架或者MEF这种框架中,而我们会发现在这样的系统中我们经常使用一种Publ 阅读全文
posted @ 2018-04-19 17:28 Hello——寻梦者! 阅读(1032) 评论(0) 推荐(0) 编辑
摘要:在上一篇中我们列举了一些反射的常规的使用,这一篇我们将介绍一些关于关于反射的高级属性,这些包括创建对反射的性能的总结以及如何优化反射性能,以及通过InvokeMember的方法如何去调用反射等等,通过对这些内容的逐步熟悉,我们会对整个反射有一个更加深入的了解与认识,在文章的最后我们会附上一个小DEM 阅读全文
posted @ 2018-02-27 14:30 Hello——寻梦者! 阅读(1522) 评论(0) 推荐(2) 编辑
摘要:今天就平常用到的非常多的反射这个技术来做一个总结,当然关于反射需要讲解的东西实在是太多的内容,在一片文章中想要讲解清楚是非常难的,本篇博客也是就自己本人对这些内容学习后的一个总结,当然包括看书和自己写过的一些代码中抽取的一些示例,而且本文也仅限于此时对于这个知识点的理解,希望通过以后的逐步学习能够不 阅读全文
posted @ 2018-02-27 11:56 Hello——寻梦者! 阅读(2289) 评论(0) 推荐(0) 编辑
摘要:最近在对接C++程序的时候碰到了一些问题,然后花了一段时间才解决,今天就这些小问题来做一个总结,很多时候由于对另外一种开发语言的不熟悉,会在使用的过程中遇到很多的问题,这些问题看似简单但是背后却有很多的东西需要去总结的,下面就最近遇到的两个调用C++ API的示例来做一个总结。 1 首先我们看看如果 阅读全文
posted @ 2017-11-30 21:57 Hello——寻梦者! 阅读(593) 评论(0) 推荐(1) 编辑
摘要:抽象类面向对象的语言中经常使用的类,网上也有各种各样的剖析,大致上都是做了以下方面的对比:1 抽象类和普通类的区别。2 抽象类和接口的区别。 3 抽象类中的虚方法和抽象方法的区别,首先去找到这些重大的区别,然后针对具体的项目来谈谈对这些概念的理解。 1 抽象类和普通类 A.都可以被继承 。 B.抽象 阅读全文
posted @ 2017-03-11 23:46 Hello——寻梦者! 阅读(1538) 评论(0) 推荐(0) 编辑
摘要:今天来接着写这个系列的文章,这一篇主要是用来介绍关于C#中的XML序列化的问题,这个相信大家一定会经常使用它,特别是在WPF中,有时候我们需要将我们后台的数据保存在数据库中,从而在软件下一次启动的时候能够自动去加载这些数据,由于我们的这些Model中字段众多,如果单独进行保存那是不太现实的,这个时候 阅读全文
posted @ 2017-02-21 15:26 Hello——寻梦者! 阅读(2705) 评论(0) 推荐(1) 编辑