<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[TimTiny的博客]]></title><description><![CDATA[我觉得男程序员是世界上最好的男人，因为他每天坐在电脑面前问我错在哪里？]]></description><link>https://blog.youkuaiyun.com/Amazing_Pei</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Amazing_Pei]]></copyright><item><title><![CDATA[C# 上位机开发之旅-委托事件的那些事[2]]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/140340990</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/140340990</guid><author>Amazing_Pei</author><pubDate>Thu, 11 Jul 2024 08:46:16 +0800</pubDate><description><![CDATA[c#自定义委托事件的那些事]]></description><category></category></item><item><title><![CDATA[C#上位机开发之旅-C#委托事件的那点事儿[1]]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/140290685</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/140290685</guid><author>Amazing_Pei</author><pubDate>Tue, 09 Jul 2024 11:24:27 +0800</pubDate><description><![CDATA[关于C#事件与委托的那些事]]></description><category></category></item><item><title><![CDATA[C#跨线程访问控件以及方法]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/130291509</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/130291509</guid><author>Amazing_Pei</author><pubDate>Fri, 21 Apr 2023 16:16:15 +0800</pubDate><description><![CDATA[安全委托,保证方法在线程中能安全调用]]></description><category></category></item><item><title><![CDATA[这就是ChatGPT？]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/128911477</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/128911477</guid><author>Amazing_Pei</author><pubDate>Tue, 07 Feb 2023 09:17:17 +0800</pubDate><description><![CDATA[ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型，一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话，还能根据聊天的上下文进行互动，真正像人类一样来聊天交流，甚至能完成撰写邮件、视频脚本、文案、翻译、代码等任务。]]></description><category></category></item><item><title><![CDATA[C# Event&Delegate]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/128695880</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/128695880</guid><author>Amazing_Pei</author><pubDate>Sun, 15 Jan 2023 17:12:17 +0800</pubDate><description><![CDATA[C# Action 是系统预定义的一个委托，原型为 public delegate void Action()，因此主要对象为无参数，无返回值，因此只要不追求返回值，不用自己声明委托函数，直接用Action即可。二、使用方法：Action a=new Action(函数名);或者用lambda表达式：Action a=new Action( ()=>{ 执行语句 } )；扩展：如果想带参数，就用Action]]></description><category></category></item><item><title><![CDATA[C# 嵌入式数据库LiteDB]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/127728210</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/127728210</guid><author>Amazing_Pei</author><pubDate>Mon, 07 Nov 2022 11:49:58 +0800</pubDate><description><![CDATA[之前就有写过LiteDB数据库相关的一篇文章，不过内容比较简单，简单的增删查改，最近项目中又有场景要用到数据库，索性重新写了一篇。]]></description><category></category></item><item><title><![CDATA[C# AutoResetEvent]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/125334582</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/125334582</guid><author>Amazing_Pei</author><pubDate>Fri, 17 Jun 2022 15:40:11 +0800</pubDate><description><![CDATA[C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源，跨平台)之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。]]></description><category></category></item><item><title><![CDATA[基于Halcon的C#条码识别案例（简易）]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/124278277</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/124278277</guid><author>Amazing_Pei</author><pubDate>Tue, 19 Apr 2022 17:13:00 +0800</pubDate><description><![CDATA[一：基于Halcon的C#条码识别案例分析





read_image (Image, 'C:/Users/Administrator/Desktop/22.jpg')
rgb1_to_gray (Image, GrayImage) 
*创建一个二维码数据模型
 create_data_code_2d_model ('QR Code','default_parameters', 'maximum_recognition',DataCodeHandle) 
*匹配二维码模型，获取数据信息
 find_d.]]></description><category></category></item><item><title><![CDATA[C# Chart之双Y轴图表实现]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/122120490</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/122120490</guid><author>Amazing_Pei</author><pubDate>Fri, 24 Dec 2021 08:53:06 +0800</pubDate><description><![CDATA[前些天客户提出一个需求，场景如此：在Z轴下压得过程中，要实时记录Z轴的值，也要记录压力传感器的压力值，以时间为X轴，完了当时我觉得目前的Chart实现不了，通过搜罗，发现还是可以实现的，虽然效果一般，但是也勉强能达到客户要求。



话不多说，上才艺； 第一个Chart Series 设置如下；





第二个Series设置如下；




设置完成之后呢，大概就是这样子，ChatType选择的是Spline，朋友们可根据自己的需求选择类型；效果大概就这样；




下面是读取文件按钮下的事件

....]]></description><category></category></item><item><title><![CDATA[NOSQL之LiteDB使用详解]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/121772186</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/121772186</guid><author>Amazing_Pei</author><pubDate>Tue, 07 Dec 2021 16:42:49 +0800</pubDate><description><![CDATA[一：什么是LiteDB



定义：LiteDB是一种文档型单文件数据库，基于Key-Value方式存取数据。LiteDB 是一个 .NET 开发的小型快速轻量级的 NoSQL 嵌入式数据库，特性： 无服务器的 NoSQL 文档存储，数据存储在单一文件中 类似 MongoDB 的简单 AP。

也可以参考LiteDB，以下是链接； LiteDB官网下载http://www.litedb.org/











我们可以打开VS2019，通过Nuget控制台，为项目添加LiteDB的引用；...]]></description><category></category></item><item><title><![CDATA[C#同步委托与异步委托学习总结]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/121657332</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/121657332</guid><author>Amazing_Pei</author><pubDate>Wed, 01 Dec 2021 16:28:22 +0800</pubDate><description><![CDATA[C#异步委托与同步委托学习总结]]></description><category></category></item><item><title><![CDATA[2021.02.02 闲言碎语]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/113542601</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/113542601</guid><author>Amazing_Pei</author><pubDate>Tue, 02 Feb 2021 11:07:20 +0800</pubDate><description><![CDATA[求道

  时间是二零二一年二月二号，距离除夕仅剩8天，地点在苏州。此时此刻的心情非常忐忑，无心工作，无心生活，好像一切都跟我没有关系。我也不知道这是为什么，种种原因交织在一起，织就了我这张既乱又破的网。

  前些日子在上海出差，把项目的事情处理完毕，回到公司开始了“摸鱼”的工作生活。

  回公司才发现，组织结构的变化让原有的布局结构全部变了，以前的同事，领导现在都变了。坐在办公室，对着电脑，茫然了。。。

  身边的人都在忙着处理年前最后的工作，下了班有说有笑的去打球，出去玩，而我呆...]]></description><category></category></item><item><title><![CDATA[C# delegate、event、Action、Func使用案例解析]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/110921086</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/110921086</guid><author>Amazing_Pei</author><pubDate>Wed, 09 Dec 2020 14:05:54 +0800</pubDate><description><![CDATA[C# 中 delegate、event、Action、Func使用案例解析


一：delegate与event配合使用



public static class Evt_Test
    {
        public static string strEquals(string str1, string str2)
        {
            Console.WriteLine(str1 + str2);
            return str1.Concat(str2).T]]></description><category></category></item><item><title><![CDATA[《C#设计模式》【观察者模式】]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/110523742</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/110523742</guid><author>Amazing_Pei</author><pubDate>Thu, 03 Dec 2020 11:20:14 +0800</pubDate><description><![CDATA[Observer 与 Subject互为耦合，但是这种耦合的双方都依赖于抽象，而不依赖于具体。

一、观察者模式

目的


我们都知道解决一个问题有N种解决方式，但在面向对象的设计中如何能做到“高内聚，低耦合”，设计可重用的对象才是我们追求的。在设计过程中，我们经常会接触到一种情况：一个对象的行为引发其它多个对象相应的行为。这时我们便可以通过观察者模式的设计思想来设计对象模型。


概述


观察者模式(Observer Pattern)是设计模式中行为模式的一种，它解决了上述具有一对多依赖关系的对象的.]]></description><category></category></item><item><title><![CDATA[程序员一段骂醒自己的话 （持续打卡之1/50 ）]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/110424860</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/110424860</guid><author>Amazing_Pei</author><pubDate>Tue, 01 Dec 2020 11:04:57 +0800</pubDate><description><![CDATA[不要总因为一点小事心情就一团糟，有些情绪真的没必要，纯属庸人自扰。反正我们谁也别想活着从这个世界离开，所以笑一笑，只要死不了，其他又有什么大不了。

如果你感到委屈，证明你还有底线；如果你感到迷茫，证明你还有追求；如果你感到痛苦，证明你还有力气；如果你感到绝望，证明你还有希望。从某种意义上，你永远都不会被打倒，因为你还有你。



你总是喜欢把事情拖到第二天，你不能总是这么拖了，有一天，你会有很多事情要做，你的余生都不够你用。

这世上根本不存在感同身受，只因你给的嬉笑太盛，无人在意你的心酸认真，所以别傻傻]]></description><category></category></item><item><title><![CDATA[C# 9.0 新特性 语法糖]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/109675595</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/109675595</guid><author>Amazing_Pei</author><pubDate>Fri, 13 Nov 2020 15:34:34 +0800</pubDate><description><![CDATA[C# 9.0 新特性 语法糖


原文链接：原文出处


C# 9.0 正在成形，我想和大家分享一下我们对下一版本语言中添加的一些主要特性的想法。

对于 C# 的每一个新版本，我们都在努力让常见的编码场景的实现变得更加清晰和简单，C# 9.0 也不例外。这次特别关注的是支持数据模型的简洁和不可变表示。

就让我们一探究竟吧!


一、仅初始化(init-only)属性


对象初始化器非常棒。它们为类型的客户端提供了一种非常灵活和可读的格式来创建对象，并且特别适合于嵌套对象的创建，让你可以一次性创建整个.]]></description><category></category></item><item><title><![CDATA[《C#设计模式》《原型模式》]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/107400922</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/107400922</guid><author>Amazing_Pei</author><pubDate>Fri, 17 Jul 2020 09:50:03 +0800</pubDate><description><![CDATA[一：案例场景


在软件系统中，当创建一个类的实例的过程很昂贵或很复杂，并且我们需要创建多个这样类的实例时，如果我们用new操作符去创建这样的类实例，这就会增加创建类的复杂度和创建过程与客户代码复杂的耦合度。如果采用工厂模式来创建这样的实例对象的话，随着产品类的不断增加，导致子类的数量不断增多，也导致了相应工厂类的增加，维护的代码维度增加了，因为有产品和工厂两个维度了，反而增加了系统复杂程度，所以在这里使用工厂模式来封装类创建过程并不合适。由于每个类实例都是相同的，这个相同指的是类型相同，但是每个实例的状态]]></description><category></category></item><item><title><![CDATA[《C#设计模式》【外观模式】]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/107250519</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/107250519</guid><author>Amazing_Pei</author><pubDate>Fri, 10 Jul 2020 14:59:23 +0800</pubDate><description><![CDATA[一：案例场景

生活中，比如笔记本是一个整体，看似是一件东西，实际上只是将主机和显示器组装在一起而已，对外提供一个电源按钮，当按下电源按钮的时候，启动了主机和显示器，这里的这个电源按钮就差不多是外观模式，对外只提供了一个电源按钮。



二：概念定义

外观模式（Facade）的定义:为子系统中的一组接口提供一个一致的界面，用来访问子系统中的一群接口。



三：案例解析

某文件系统管理，包括文件的读取，加密，解密，用外观模式实现该系统功能。【

具体实现如下：


    //加密类
    pu...]]></description><category></category></item><item><title><![CDATA[《C#设计模式》【装饰者模式】]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/107173704</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/107173704</guid><author>Amazing_Pei</author><pubDate>Tue, 07 Jul 2020 09:52:51 +0800</pubDate><description><![CDATA[一：案例场景

在软件开发中，我们经常想要对一类对象添加不同的功能，例如要给房子添加安防，房子暖气，房子防水等，如果此时利用继承来实现的话，就需要定义无数的类，如HouseSecuity（安防类）、HouseWarm（暖气类）等，这样就会导致 ”子类爆炸“问题，为了解决这个问题，我们可以使用装饰者模式来动态地给一个对象添加额外的职责。下面让我们看看装饰者模式。



二：概念定义

装饰者模式以对客户透明的方式动态地给一个对象附加上更多的责任，装饰者模式相比生成子类可以更灵活地增加功能。



三：案...]]></description><category></category></item><item><title><![CDATA[C# 跨线程访问UI线程控件]]></title><link>https://blog.youkuaiyun.com/Amazing_Pei/article/details/105734190</link><guid>https://blog.youkuaiyun.com/Amazing_Pei/article/details/105734190</guid><author>Amazing_Pei</author><pubDate>Fri, 24 Apr 2020 16:32:00 +0800</pubDate><description><![CDATA[C# 跨线程访问UI线程控件



在C#中，由于使用线程和调用UI的线程属于两个不同的线程，如果在线程中直接设置UI元素的属性，此时就会出现跨线程错误。





下面介绍两种解决方案



第一种：使用控件自带的Invoke或者BeginInvoke方法。


 Task.Factory.StartNew(() =&gt; {
                this.button1....]]></description><category></category></item></channel></rss>