自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 TimeSpan(一个简单的计时器)

暂停时长在每次点击暂停的时候叠加;总时长=运行时长加上暂停时长;

2024-09-19 14:56:16 141

原创 begininvoke和control.Begininvoke的区别(利用委托来说明begininvoke调用委托的去区别)

委托,利用invoke,begininvoek调用委托事件,以及begininvoke和control.Begininvoke的区别;

2024-04-28 15:41:26 401

原创 C# Stopwatch类_性能_时间计时器

原文链接:https://blog.csdn.net/TheWindofFate/article/details/122882621。Stopwatch:提供一组方法和属性,可以准确的测量运行时间。使用的时候需要引用命名空间:System.Diagnostics。文章只含部分属性方法等,有想了解全面的在下面链接中可以查看:.NET API browser。二、Stopwatch的简单使用。一、什么是Stopwatch。

2024-01-12 08:54:32 936

原创 C#线程安全——ConcurrentDictionary线程安全哈希表

使用Dictionary添加相同的键时,运行代码的时候会报错,为了避免在运行中出错,可以选用ConcurrentDictionary来进行判断。以上两个地址可以更好的辅助了解ConcurrentDictionary。可用于判断是否已存在同样的键。

2024-01-08 11:43:01 741

原创 Task.WaitAll和Task.WaitAny();

简单的说就是需要等带全部线程完成任务再继续 阻塞当前线程,等着全部任务完成;测试的时候,消耗资源不能太小,要不然不能看出来效果;消耗资源小,对于cpu只不过是一瞬间,最好是让(老板执行 和多线程执行之间有点时间差),这样在测试的时候可以看到。这里借用一个小案例来测试:一个项目需要多个人工作,最后再汇总给一个人进行测试;执行上面的代码,结果如下图左图,会发现老板执行会被先执行,这显然不符合要求的案例,需要先多人工作再汇总。阻塞当前线程,等着任意一个任务完成,也可以限时等待;

2024-01-08 11:06:49 1209

原创 Invoke和BeginInvoke的区别

本文导读:BeginInvoke() 调用时,当前线程会启用线程池中的某个线程来执行此方法,当前线程不被阻塞,继续运行后面的代码, Invoke() 调用时,会阻塞当前线程,等到 Invoke() 方法返回才继续执行后面的代码,而这两个方法中执行的是一个委托。3、BeginInvoke() 调用时,当前线程会启用线程池中的某个线程来执行此方法,BeginInvoke不会阻止当前主线程的运行,而是等当前主线程做完事情之后再执行BeginInvoke中的代码内容,表现出“异步”的概念。C# 代码 复制。

2024-01-03 17:02:56 607 2

原创 多线程常用信号:ManualResetEvent,AutoResetEvent

我们初始化了一个值为False的ManualResetEvent对象,这意味着所有调用WaitOne放的线程将被阻塞,直到有线程调用了 Set() 方法。如果某个线程调用WaitOnef方法,则当信号处于发送状态时,线程会得到信号,继续向下执行。可见,没有信号时,WaitOne()后面的语句都不执行(被阻塞),当Set()释放信号后,所有阻塞的线程都开始继续执行。3.WaitOne等待信号的发送(在需要等待信号的线程中调用WaitOne方法,该方法会阻塞当前线程,直到收到信号);

2024-01-03 14:33:10 741

原创 WPF 打开文件(OpenFileDialog)/保存文件(SaveFileDialog) 选择基本操作

1.打开文件保存 OpenFileDialog。2. 保存选择SaveFileDialog。

2023-08-12 14:42:36 2036

原创 实用工具类(ini 文件配置,HttGget,HttpPost类等)

7. GET,POST方法。

2023-08-09 15:18:50 161

原创 C# WinForm窗体移动(在窗体没有格式的时候是不能进行窗体移动的)

【代码】C# WinForm窗体移动(在窗体没有格式的时候是不能进行窗体移动的)

2023-08-08 23:09:14 434

原创 C#WinForm 实现区域功能(窗口切换)

第二:在事件中利用反射获取反射类中的方法,并利用 AS关键字实现。此方法粗暴,虽然容易理解,但是不适合后面的管理。

2023-08-08 23:02:12 2111

原创 WPF-Prism框架(普通WPF创建Prism,Prism实现Mvvm,实现自动绑定ViewModel,Prism区域,Prism模块)

注意:导航拦截是,需要把传参时继承的接口。

2023-07-31 20:41:01 6260 5

原创 WPF-Prism框架-弹窗并传参

1话框对应的ViewModel继承接口:IDiaLogAware2.注册:RegisterDialog4.传参对象:5.接收参数:IDialogParameters6.接收用到的回调:callback7.接收窗体返回结果:dialogParameters。

2023-07-31 15:42:23 2784

原创 WPF MvvM框架(MvvMLight,Microsoft Toolkit Mvvm,CommunityToolkit.Mvvm;鼠标,键盘,手写等事件绑定如:抬起按下事件)

2. 禁止自动添加行:CanUserAddRows="False",列:AutoGenerateColumns="False",Microsoft Toolkit Mvvm 框架被废弃之后,微软官方推荐使用CommunityToolkit.Mvvm框架,4.WeakReferenceMessenger.Default.Register()注册消息;步骤3:可以直接套用,其中 Eventname所绑定的事件,在上面已经提供了相关文章;4.读写过程中关键点:如何把PLC的数据类型转换成C#数据类型。

2023-07-28 19:59:26 1964 1

原创 WPF布局标签及特殊属性(如:Grid,Panel,Canvas灯)

2.可以通过Rows="" Columns="" 来控制行和列的格数,可以单独设置行或者列,也可以两者同时设置;3.宽高的特殊 值 auto(自适应): 当设置auto时,在表格中是看不出来它被分画出来的,但将内容放置到此表格时,此表格会根据内容的大小,自定义表格大小并显示出来;2.在不设置宽和高的情况下,宽高默认是*,当然此处的*不是固定的,而是抛出设定的已经存在的设定过的高宽后,将剩下的部分按N个*分割。(做笔记,鼠标停,消失;窗体运行后,可以在窗体上进行笔记处理,鼠标松开后,笔记消失;

2023-07-15 16:20:53 664

原创 Modbus tcp和Tcp/ip有什么区别

同时,TCP/IP协议也是一种可扩展的协议,可以方便地与其他通信协议进行集成,从而实现更加复杂的通信和数据处理功能。TCP/IP协议是互联网上最常用的协议之一,它是Internet协议族的核心协议。TCP/IP协议提供了一种可靠、灵活、通用的数据传输方式,使得互联网上不同的计算机和网络之间可以互相通信和交换信息。TCP/IP协议还包括许多其他的协议,如用户数据报协议(UDP)、网络时间协议(NTP)、域名系统协议(DNS)等。它的协议结构简单明了,包括了应用层、传输层和网络层。Modbus TCP采用。

2023-07-13 16:07:59 6975

原创 多线程的初步使用和扩展封装

如果由一个任务需要开启一个线程来执行,然后线程执行完毕以后,需要另外做点别的事情该如何解决呢?ThreadStart thread线程开启要执行的;Action actionCallback之后要做的。有人会想到用 线程阻塞JOin完成,这样做可以达到效果,但会出现卡界面的现象,所以就有了新的思路方法:把两个任务都存放到一个委托李=里面。通过更改调用的顺序,参数的顺序,发现,无论如何变化,

2023-07-08 21:18:33 115

原创 C#部分定义的区别(包含Tcp和Udp,抽象类和接口,抽象类和虚方法等)

C#值类型和引用类型的区别,静态常量Const和动态常量ReadOnly的区别,委托delegate和事件event的区别,抽象类abstart与虚方法virtual的区别

2023-07-07 17:30:27 160

原创 Socke与Tcp(什么是Socket?Tcp认识,三次握手四次挥手,保护机制)

Socket又叫套接字,是一个抽象层,应用程序可以通过它发送或接收数据。套接字允许应用程序将I/O插入到网络中,并于网络中其他应用程序进行通行。网络套接字是IP地址和端口的结合。Socket不是一个具体的物件也不像http类的通信协议,可以把它看成一组基于TCP和UDP通信协议的接口;把复杂的TCP/IP协议族隐藏在Socke接口后面,用Socket去组织数据;TCP/IP分层简化图如下:现在就可以很形象的了解到底什么是Socket。

2023-07-07 16:46:26 1455

原创 C#反射(通过反射的方法,获取成员,并调用成员)(通过反射更新功能)

获取引用类的字段:获取所有公共字段type.GetFields();获取特定字段:type.GetField()返回当前实例的准确运行类型,而不是对象。1.通过反射的方法,获取成员,并调用成员。获取引用类的方法有点特别。

2023-07-06 22:46:06 3006

原创 多线程Thread(线程工具API ,创建多线程)

3.实例化线程是不会主动启动,一点要记得启动线程。2.线程状态,是否激活,是否还后台线程(

2023-07-06 16:00:48 136

原创 ASP.Net Core Web API结合Entity Framework Core框架(API的创建使用,接口前端权限设置,前端获取API的Get,post方法)(程序包引用以及导入数据库)

Microsoft.EntityFrameworkCore.SqlServer (适用于EF Core SQL Server 提供程序)Microsoft.EntityFrameworkCore.Design(适用于EF Core .NET Core CLI 工具 )Microsoft.EntityFrameworkCore.Tools(适用于 EF Core 的包管理器控制台工具)视图 ——其他窗口——程序包管理器控制台 输入以下指令,将数据库中的表导入程序中。

2023-07-05 22:05:20 3730

原创 十.string 和stringBuilder,stringBufferilder

一旦创建,就不能再进行修改(字符串的这种特性,使得它的赋值和连接操作很容易造成内存浪费),其底层是根据字符数组(char[])实现的。StringBuilder表示【可变字符字符串】类型,其中的字符可以被改变、增加、删除,()当向一个已满的StringBuilder添加字符时,其会自动申请内存进行扩容(创建字符串就会分配地址,复制,修改,创建都会分配新地址。String类型在C#中用于保存字符,是引用类型。

2023-07-05 21:37:19 140 1

原创 文件的读写(File类和读写流)

写入:没有文件会自己创建;写入:没有文件会自己创建;1.1 StreamWrite 写入流。1.2 StreamWrite 写入流。创建打开文件并写入 :会自动创建文件。2.2 StreamRead 读取流。1.3File类写入。2.1 Filel类。

2023-07-05 21:19:16 547 1

原创 九.类相关(抽象类,接口类,多态(包含抽象方法与虚方法virtual的区别,抽象类与接口的区别)密封类,部分类-)

接口类使用Inteface关键字定义;接口里面只能有属性,方法,索引器,事件;一般来说接口中是不建议方法有方法体;接口不能实例化,也不能通过接口本身互访,必须需要被实现类继承。

2023-06-20 22:11:46 625 1

原创 八.继承(方法的调用)

上面说过 子类本身实例时,会默认调用构造函数,同时因为继承原因,会优先调用父类的构造函数。调用方法的时候只会调用自己的方法。当调用方法为普通方法时,此时还是属于父类的引用,因此不能调用子类的方法(需要子类自己实例调用)。在继承中,子类重写方法,父类对应的方法是需要为 虚方法即(value关键字定义);1.继承是面向对象程序设计中最重要的概念之一;是面向对象的三大特征之一;class 派生类:基类。2.可以理解为子类(派生类)继承父类(基类);6.格式:class 基础类。当输出带有字段的时候,

2023-06-19 09:20:17 480

原创 五.构造函数(实例构造,静态构造,私有构造)

私有构造函数是一种特殊的实例构造函数,通常只包含静态成员的类中。如果类中只有一个或多个私有构造函数而没有公共构造函数的话,4.倘若在类的声明中没有显式的提供构造函数,这种情况编译器会提供一个隐士的默认构造函数:不带参数,方法体为空;7.在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数以初始类化;注意:当一个类只有一个私有构造函数,或多个私有构造函数而没有。6.用户无法控制程序中静态构造函数的执行时间;,静态构造函数将在创建第一个实例或引用类中的。8..静态构造函数会在实例构造函数之前运行;

2023-06-17 19:03:35 129

原创 七.结构体 Struct

结构体是值类型数据结构。它使得单一变量可以存储各种数据类型的相关数据;原来的值类型一般用来定义单一数据。

2023-06-17 15:39:32 74

原创 六.静态常量(Const)和动态常量(Readonly)

注意:readonly和const达到的效果相同,都是让变量无法再修改;5.具有静态属性,是静态的成员,但不需要通过static关键字来定义;.可以在类constructor里改变它的值.不能作用于局部变量;4.对于类的不同对象而言,动态常量可以不一样;4.每个类的实例,静态常量都一样;,并且之后不能进行数据修改,即。,且定义时不能进行初始化,可以。8.可以出现在方法和类中;1.静态常量Const。3.定义时没有限制;

2023-06-17 14:51:10 309

原创 String字符串常见APi(API:字符串转数组,字符串替换,字符串去空格,截取,插入以及字符串的各种判断(如:Contains是否含有,判断开头,结尾等)

包含多种API 如:字符串转数组,字符串替换,字符串去空格,截取,插入以及字符串的各种判断(如:Contains是否含有,判断开头,结尾等)

2023-06-17 11:23:20 411

原创 C#Array数组API

常用Array-API

2023-06-13 21:46:37 356

原创 Tcp协议

基础知识Tcp服务端:IP-端口-占用两个字节:0-65535;特殊端口不要使用,如:21,22,8080;Tcp客服端:多个客户端可以连接一个服务端;服务端和客户端之间的通信是双向的,但是客户端之间不能直接进行通信;通信过程:客户端-服务端-客户端;协议关键字:Socket是C#提供的一个用于通信的类库,其中包括TCP协议的开发。

2023-05-19 19:23:50 159

原创 UDP协议

4.一对一,一对多,多对多;2.延迟小,传输效率高;3.无序,容易丢包;

2023-05-18 20:01:16 801

原创 基于Navicate的基于sql语句(增删改查,多表关联,聚合函数,查询时判断条件,主外键,视图,函数)

1.定义变量关键字:declare,且变量名要以@开头,更改变量值的时候,必须用set;2.通过查询结果给变量赋值-- 给@id赋值,以set开头set @id=5set @id=10set @id=3--给变量赋值判断 begin end 相当于{},输出关键字:print-- 给@id赋值,以set开头set @id=5set @id=10if @id

2023-05-17 21:47:07 5415 1

原创 用代码对数据库进行简单操作

数据库和代码的连接,C#语言操作数据表

2023-05-10 15:17:49 960

原创 C#网格控件dataGridView(利用List列表和DataTable数据表绑定dataGridView)构建数据表

C#网格控件(List列表和DataTable数据表)操作,利用DataTable来对网格进行增加删除

2023-04-08 17:09:45 8348

原创 C#窗体简易猜数游戏

C#窗体简易猜数游戏

2023-04-07 17:45:55 993

原创 C#窗体简易点名器

本文利用C#在WinForm中制作简易点名器,主要点在于事件绑定和随机数两个知识点

2023-04-07 17:34:27 719

原创 C#进阶-泛型

针对泛型概念,泛型语法,泛型类,泛型方法,泛型接口做了一些自己的见解,若有不足与错误,欢迎评论指正与补充

2023-04-04 20:59:10 354 1

原创 C#方法(完整篇-包含了:参数(out,ref)的关键字,方法调用顺序,方法的栈帧以及递归调用实现斐波那契数列等内容)

本文主要针对C#方法 ,对C#方法的var关键字,方法参数类型,方法命名参数,参数的关键字,方法的调用顺序,方法的栈帧,递归进行归纳整理,本文内容由本人自己总结,若有不足之处,欢迎留言补充,指正。

2023-03-23 20:46:18 1239 1

封装的dell文件(Debug 版)

封装的dell文件(Debug 版)

2023-07-05

空空如也

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

TA关注的人

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