自定义博客皮肤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#

C#开发技术

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

原创 博客通告

本人的博客创作将会以博客园为主要发布平台,大部分原创或转载博客将发布至博客园,少数零碎笔记或小问题解决方法将继续发布至CSDN博客。本人博客发布平台如下,欢迎访问:博客园:https://www.cnblogs.com/timefiles/CSDN:https://blog.csdn.net/FliesOfTime/...

2020-04-12 16:20:21 198

翻译 .NET开源类库Nini手册(INI、XML、注册表的配置应用)-中文翻译

目录1.简介1.1什么是应用程序配置数据?1.2问题1.3介绍Nini2.入门2.1一个简单的例子2.2默认值2.3设置,保存和删除键2.4添加和删除配置2.5键值扩展3.高级主题3.1合并3.2价值别名3.3键值清单3.4活动4.配置类型4.1 Ini文件4.2 XML文件4.3 Windows注册表配置4.4 .NET配置文件4.5命令行(Argv)配置5.有效使用Nini5.1多个用户的处理...

2019-09-29 10:33:30 1158

原创 C#编程技巧-高性能、避免异常、代码简洁-(长期更新)

字符串连接字符串“+”和Append的区别“+”和Append的功能都一样(连接字符串),两者之间的区别在于执行效率上面的问题。Append构建字符串的效率比使用“+”连接的高,如果有较多的字符串需要拼接建议使用Append进行拼接,少的话使用“+”更方便阅读。Append和AppendLine的区别Append和AppendLine的区别:Append是不加回车的拼接(追加);Appe...

2019-09-24 14:26:51 1494

翻译 C#中的线程 第1部分:入门

目录介绍和概念Join和Sleep线程如何工作线程与进程线程的使用和误用创建和启动线程将数据传递给线程命名线程前台线程和后台线程线程优先级异常处理线程池通过TPL进入线程池在没有TPL的情况下进入线程池QueueUserWorkItem异步委托优化线程池最小线程数如何工作出处:http://www.albahari.com...

2019-06-03 14:48:51 349

原创 C#常见问题解决方案手册(即查即用)

目录C#正则表达式C#语言之字符串和正则表达式C# 正则表达式判断IP地址是否合法C#:string字符串处理c#字符串按行读取C#数值转固定长度字符串C#字符串转换为数字(不考虑异常)——推荐不考虑异常的字符串转数字C#字符串判断是否相等(忽略大小写)——推荐使用c#怎样取到某个特定字符后面的字符,比如XXXXX#123 和 XXX#12中#后面的数字C#...

2019-05-15 13:09:25 2073

原创 C#使用数据源时不能更改datagridview的单元格颜色

问题描述我用一个数据表作为一个DataGridView的数据源,每次更换数据源重新绑定后想更改一些单元格的颜色,但只有第一次成功更改颜色,之后的颜色更改全部失败。解决方法最直接的解决办法是晚点来设置颜色 - 通常在一个 DataBindingComplete 事件处理程序中:void dataGridView1_DataBindingComplete(object sender, Data...

2020-04-12 16:10:12 1175 1

原创 "在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke"

“在Window窗体程序开发的时候,如果使用多线程编程,在子线程中访问主线程窗体内的控件,就需要使用控件的Control.Invoke方法或者BeginInvoke方法。但是有时候因为Window执行速度太快,尤其是你写代码的时候在InitializeComponent();完成之前起了一个线程去执行某些操作,涉及到窗体控件的,当你在调用Control.Invoke的时候,就可能出现 “在创建窗口...

2020-02-05 14:03:35 1218

原创 C#解决问题:BindingSource 不能是自己的数据源。请不要将 DataSource 和 DataMember 属性设置为循环引用 BindingSource 的值。

应用场景:C#的DataGridView绑数据表,表的数据被实时修改(可能被非UI线程修改),DataGridView实时显示表的数据。绑定方法:BindingSource bs = new BindingSource();bs.DataSource = dataList;this.dataGridViewX_DataList.DataSource = bs;异常提示:Binding...

2019-12-19 09:06:37 2902 1

原创 《大话数据结构》读书笔记--6.树

目录树的定义树的定义树(Tree):是n(n=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:有且仅有一个特定的称为根(Root)的结点;当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、…、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。结点分类:结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶结点(...

2019-11-30 10:52:14 186

原创 《大话数据结构》读书笔记--5.串

目录回文诗串的定义回文诗思妻诗(宋)李愚枯眼望遥山隔水,往来曾见几心知?壶空怕酌一杯酒,笔下难成和韵诗。途路阳人离别久,讯音无雁寄回迟。孤灯夜守长寥寂,夫忆妻兮父忆儿。思夫诗 (回文诗)儿忆父兮妻忆夫,寂寥长守夜灯孤。迟回寄雁无音讯,久别离人阳路途。诗韵和成难下笔,酒杯一酌怕空壶。知心几见曾往来,水隔山遥望眼枯。串的定义串(string):是由零个或多个字符组成的有限序...

2019-11-21 16:52:25 172

原创 《大话数据结构》读书笔记--4.栈与队列

目录栈的定义栈的抽象数据类型栈的顺序存储结构两栈共享空间栈的链式存储结构及实现栈的作用栈的应用——递归栈的应用——四则运算表达式求值队列的定义栈的定义栈(stack):是限定仅在表尾进行插入和删除操作的线性表。允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结...

2019-11-11 11:15:27 261

原创 《大话数据结构》读书笔记--3.线性表

目录

2019-11-09 11:02:46 197

原创 静态链表-C#实现

第一版using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace DataStructure{ public class StaticLinkList<T> { ...

2019-11-09 10:18:33 362

原创 《大话数据结构》读书笔记--2.算法

目录算法定义算法特性算法设计的要求算法效率的度量方法算法时间复杂度常见的时间复杂度最坏情况与平均情况算法空间复杂度总结:时间复杂度与空间复杂度的关系算法定义算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。算法特性算法具有五个基本特性:输入、输出、有穷性、确定性和可行性。输入输出:算法具有零个或多个输入,如打印“hello world!”...

2019-10-31 15:29:01 255 1

原创 《大话数据结构》读书笔记--1.数据结构绪论

基本概念和术语数据:程序 = 数据结构 + 算法数据结构:是相互之间存在的一种或多种特定关系的数据元素的集合。为编写出一个“好”的程序,必须分析待处理对象的特性及各处理对象之间存在的关系。这也就是研究数据结构的意义所在。按照视点的不同,可以把数据结构分为 逻辑结构 和 物理结构: ☛ 逻辑结构:是指数据对象中数据元素之间的相互关系。其可具体分为以下四种关系:  1. 集合结构:数据元...

2019-10-31 10:04:42 187

原创 [网络通信基础]-03:心跳机制

心跳包心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。使用心跳包的典型协议是IM,比如QQ/MSN/飞信等协议。作用心跳包主要也就是用于长连接的保活和断线处理。保活在长连接下,有可能很长一段时间都没有数据往来。理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。有的...

2019-10-30 09:53:58 995

原创 C#dataGridView隐藏第一行时异常“与货币管理器的位置关联的行不能设置为不可见”

dataGridView绑定了datatable,我想全部隐藏,然后根据给定的行号显示对应的行,但隐藏第一行时出现异常“与货币管理器的位置关联的行不能设置为不可见”。在网上找到解决办法:CurrencyManager cm=(CurrencyManager)BindingContext[dataGridView1.DataSource];cm.SuspendBinding(); //挂起数据...

2019-10-23 14:58:42 780

原创 C#索引器

索引器索引器能够使对象像数组一样被索引,使用数组的访问方式 object[x]索引器的声明在某种程度上类似于属性的声明,例如,使用 get 和 set 方法来定义一个索引器定义属性需要提供属性名,而定义索引器需要提供一个指向对象实例的 this 关键字索引可以重载实现代码: public class NumberIndex { int num0 = 0; ...

2019-10-18 11:50:51 160

转载 [转]IOC容器:Unity

一、什么是IOC学习IOC之前先来了解一个依赖导致原则(DIP),依赖导致原则是IOC的核心原理。依赖导致:即上层模块不应该依赖于低层模块,二者应该通过抽象来依赖。依赖于抽象,而不是依赖于细节。首先来看下面的例子:定义一个接口,封装数据库的基本CRUD操作,接口定义如下:using System;using System.Collections.Generic;using Sys...

2019-10-16 10:08:15 326

原创 C#使用Stopwatch精确测量运行时间

一般测量时间间隔使用的是DateTime.Now实例的DateTime.Ticks当前属性,想要精确测量一个操作的运行时间就只能使用Stopwatch类计时了。Stopwatch计时精度取决于硬件,如果安装的硬件和操作系统支持高分辨率性能计数器, 则Stopwatch类将使用该计数器来测量运行时间。,否则,Stopwatch类将使用系统计时器来测量运行时间。测量耗时操作的运行时间: ...

2019-10-15 15:07:08 3156

原创 C#Process的OutputDataReceived事件不触发的解决方法

问题描述:项目需要用cmd调用其它软件,实时获取软件处理结果,并根据获取到的结果决定下一步的输出,代码如下:Process proCmd = null;proCmd = new Process();proCmd.StartInfo.FileName = "cmd.exe"; //cmd proCmd.StartInfo.UseShellExecute = fa...

2019-10-12 09:20:06 4317 2

原创 C#三种定时器的介绍及用法

概述在.NET Framework里面提供了三种Timer(只考虑Winform)① System.Windows.Forms.Timer② System.Timers.Timer③ System.Threading.Timer现分述如下:1.System.Windows.Forms.Timer介绍  System.Windows.Forms.Timer基于Windows消息循环,...

2019-10-08 09:11:12 1705 1

翻译 .NET开源类库ini-parser(以字符串形式解析INI配置文件)使用方法—中文翻译

第一步此页面将显示代码示例,这些示例将帮助您使用此解析器读取INI文件的内容。请参阅配置页面以了解如何在解析文件时更改。INI文件结构各个部分的INI文件const,每个定义一个唯一的键,并为每个键分配一个唯一的值。节被声明为包含在方括号中的唯一单词。方括号内的空格将被忽略,但必须使用唯一的单词([sampleSection])定义该部分在部分中,我们可以定义具有唯一值的键。键在同一部分...

2019-09-29 16:29:26 3528

原创 程序设计-免费PNG、ICO图标资源网站

icons8.cn(强烈推荐)国内访问有时比较卡,支持中文,支持风格、设备类型、关键词等搜索,免登陆免费下载,支持在线编辑颜色。听说有离线库可以下载,我没试过。easyicon(收藏备用)国内访问速度较快,支持中文,支持关键词、颜色、尺寸搜索,免登陆免费下载。...

2019-09-29 14:59:08 1020

原创 C#advTree 控件的连接线怎么设置、取消

取消advtree 的连接线:NodesConnector属性——选择Remove connector(有连接线时才有此选项)添加advtree 的连接线:NodesConnector属性——选择Create new connector(无连接线时才有此选项,连接线的颜色好像和默认的不同,暂时还不知道怎么设置)...

2019-09-25 17:09:07 614

原创 C#控件的dock属性为fill时覆盖了其它控件(或者有一部分在其它控件下面)的解决方法

简单方法(控件设置fill时容器没有全部占满):在一个容器里的控件,如果dock 为fill时 ,只有它是最后一个添加的控件时才不会遮盖其它的控件,也就是说,最先添加的会被最后添加的遮盖,你可以安这个思路设计一下你的布局,或者剪切一下再添加就是最后一个了。其它方法(控件设置fill时容器已经占满):容器已经占满时设置fill不仅会覆盖其它控件,还可能导致选择了错误的容器。归根结底是z-orde...

2019-09-25 15:44:42 4462

转载 [转]深入学习C#匿名函数、委托和Lambda表达式

匿名函数  匿名函数(Anonymous Function)是表示“内联”方法定义的表达式。匿名函数本身及其内部没有值或者类型,但是可以转换为兼容的委托或者表达式树类型(了解详情)。匿名函数转换的计算取决于转换的目标类型:如果是委托类型,则转换计算为引用匿名函数所定义的方法的委托;如果是表达式树类型,则转换将计算以对象结构形式表示方法结构的表达式树。   匿名函数有两种语法风格:Lambda表...

2019-09-25 10:21:22 294 2

原创 C#DateTime.ToString格式化时间字符串

DateTime.ToString(string format) 中 format 参数(区分大小写):参数含义d月中的某一天。一位数的日期没有前导零。dd月中的某一天。一位数的日期有一个前导零。ddd周中某天的缩写名称,在 AbbreviatedDayNames 中定义。dddd周中某天的完整名称,在 DayNames 中定义。M月...

2019-09-24 14:10:11 3311

原创 c#匿名委托获取自身的方法

有时事件只触发一次,不想另外创建方法使用匿名委托,如果想在匿名委托中引用自身可使用以下办法:Action act = null;act = new Action(()=> { //方法代码... XXX.Complete -= act;});XXX.Complete += act;...

2019-09-23 16:32:17 260

原创 C#SocketAsyncEventArgs.Completed事件会不会引发

Socket异步操作引发SocketAsyncEventArgs同一时间只能进行一个操作,通过Completed来确认当前操作是否完成,如果同步完成是不会触该事件需要自己手动调用处理。如:Socket.ReceiveAsync(SocketAsyncEventArgs)、Socket.SendAsync(SocketAsyncEventArgs)为同步操作时不会引发SocketAsyncEve...

2019-09-19 10:35:12 1165

转载 [转]C#中的global关键字(global::)

global关键字,就是字面的意思,全局。其实有些时候会犯一些错误,就是类名取了一个跟系统类名雷同的情况,其实这是设计上的失误,但是会出现一个情况就是没改了,那么global关键字就起到了作用。如下代码:using System;using System.Collections.Generic;using System.Linq;using System.Text; nam...

2019-09-17 13:28:17 7419

转载 Winform操作App.config(增加、修改、删除、读取等)

操作App.config需要添加引用System.Configuration,并且在程序中using System.Configuration。添加键为keyName、值为keyValue的项:public void addItem(string keyName, string keyValue){ //添加配置文件的项,键为keyName,值为keyValue ...

2019-09-17 13:14:59 581

转载 C#中几种多线程的使用方式

1. ThreadThread默认开启前台线程。 其他的开启方式默认开启后台线程。首先导入命名空间:System.Threading实例化一个Thread对象Thread newThread = new Thread(AMethod); // AMethod,为该线程将要执行的任务。启动线程若要开始执行线程,可使用Start方法newThread.Start();停止线程...

2019-09-16 09:18:10 1063

原创 C#事件标准命名规则(包括用作事件类型的委托命名)

一些开源代码的事件命名很混乱,以此博客用作本人以后工作的参考。事件的名称事件始终是指某个操作,这个操作可能正在发生,也可能已经发生。因此与方法一样,事件用谓词命名,谓词时态用于指示事件引发的时间。✓ 务必使用谓词或谓词短语来命名事件。示例:Clicked、Painting、DroppedDown等。✓ 务必通过使用现在时态和过去时态,让事件名称含有时间先后的概念。例如,...

2019-09-10 09:10:42 4355

原创 [网络通信基础]-02:网络通信架构

目录TCP通信概述服务端架构客户端架构应用层协议客户端连接服务端(错误示范)UDP通信概述程序结构通信数据处理TCP通信概述TCP通信双方在进行数据交换之前,先要建立连接,连接建立后,通信双方之间相当于有一条隧道,数据按顺序在该隧道中传输,数据传输完毕后,双方可以选择关闭隧道,连接结束。TCP 通信编程中,“请求方”主动连接“被请求方”,该过...

2019-09-05 10:47:10 846

原创 C# 异步编程模式 APM、EAP、TPL

目录异步编程模式APM异步编程模型APM的本质APM的实现读取的同步方法:BeginXxx方法——读取的异步方法:EndXxx方法——结束异步操作异步调用的结果——与IAsyncResult对象的使用有关异步编程模式.NET 提供了执行异步操作的三种模式1:TAP:基于任务的异步编程模式(Task-based Asynchronous Pattern) ,该模式使用单一方法表示异步操作的开...

2019-09-04 09:24:39 1553

原创 C#中BackgroundWorker的使用

介绍BackgroundWorker 类允许您在单独的专用线程上运行操作,在界面上报告进度,接受界面的控制信号,返回运算结果。BackgroundWorker 代码运行在非UI线程之上,且不跨 AppDomain 边界进行封送处理。初始化BackgroundWorker主要需要对BackgroundWorker绑定以下三个事件:开始工作的事件:DoWork完成工作的事件:RunWork...

2019-09-04 09:14:58 1187

转载 C# 获取进程或线程的相关信息

原地址:C# 获取进程或线程的相关信息using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics; namespace ConsoleApp{ class ProcessDo { /// <s...

2019-09-03 10:59:00 612

原创 [递归算法]汉诺塔解析

汉诺塔问题汉诺塔:大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。问题简化:A、B、C三个柱子,将A上按照大小顺序放置的n个盘子按大小顺序移到C,小圆盘上不能放大圆盘。汉诺塔解法这个解法可以简单分为三个步...

2019-08-26 14:36:57 1492

原创 [C#线程]创建无参、有参、回调传参的线程

线程简介官方线程介绍:https://docs.microsoft.com/zh-cn/dotnet/standard/threading/?view=netframework-4.8C#创建无参、有参的线程参考文章:http://c.biancheng.net/csharp/140/ThreadStart:创建无参的线程:class Program{ static...

2019-08-02 16:13:34 773

空空如也

空空如也

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

TA关注的人

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