- 博客(31)
- 收藏
- 关注
原创 C#将部分Controls数据导入对象并存入ini中
在日常的Winform设计工作中,将控件中的数据导出到对应属性或者字段中,再进行保存是经常会用到的技巧;最简单的就是同时遍历控件和遍历属性字段进行名称对比(需要保证控件的名称要包含在字段属性中);本篇文章主要是在简单的基础上优化整体逻辑,不仅仅是只遍历控件和属性进行名称对比(适合类),还包含一些筛选;
2024-10-08 16:23:32
484
原创 begininvoke和control.Begininvoke的区别(利用委托来说明begininvoke调用委托的去区别)
委托,利用invoke,begininvoek调用委托事件,以及begininvoke和control.Begininvoke的区别;
2024-04-28 15:41:26
476
原创 C# Stopwatch类_性能_时间计时器
原文链接:https://blog.youkuaiyun.com/TheWindofFate/article/details/122882621。Stopwatch:提供一组方法和属性,可以准确的测量运行时间。使用的时候需要引用命名空间:System.Diagnostics。文章只含部分属性方法等,有想了解全面的在下面链接中可以查看:.NET API browser。二、Stopwatch的简单使用。一、什么是Stopwatch。
2024-01-12 08:54:32
1033
原创 C#线程安全——ConcurrentDictionary线程安全哈希表
使用Dictionary添加相同的键时,运行代码的时候会报错,为了避免在运行中出错,可以选用ConcurrentDictionary来进行判断。以上两个地址可以更好的辅助了解ConcurrentDictionary。可用于判断是否已存在同样的键。
2024-01-08 11:43:01
894
原创 Task.WaitAll和Task.WaitAny();
简单的说就是需要等带全部线程完成任务再继续 阻塞当前线程,等着全部任务完成;测试的时候,消耗资源不能太小,要不然不能看出来效果;消耗资源小,对于cpu只不过是一瞬间,最好是让(老板执行 和多线程执行之间有点时间差),这样在测试的时候可以看到。这里借用一个小案例来测试:一个项目需要多个人工作,最后再汇总给一个人进行测试;执行上面的代码,结果如下图左图,会发现老板执行会被先执行,这显然不符合要求的案例,需要先多人工作再汇总。阻塞当前线程,等着任意一个任务完成,也可以限时等待;
2024-01-08 11:06:49
1369
原创 Invoke和BeginInvoke的区别
本文导读:BeginInvoke() 调用时,当前线程会启用线程池中的某个线程来执行此方法,当前线程不被阻塞,继续运行后面的代码, Invoke() 调用时,会阻塞当前线程,等到 Invoke() 方法返回才继续执行后面的代码,而这两个方法中执行的是一个委托。3、BeginInvoke() 调用时,当前线程会启用线程池中的某个线程来执行此方法,BeginInvoke不会阻止当前主线程的运行,而是等当前主线程做完事情之后再执行BeginInvoke中的代码内容,表现出“异步”的概念。C# 代码 复制。
2024-01-03 17:02:56
648
2
原创 多线程常用信号:ManualResetEvent,AutoResetEvent
我们初始化了一个值为False的ManualResetEvent对象,这意味着所有调用WaitOne放的线程将被阻塞,直到有线程调用了 Set() 方法。如果某个线程调用WaitOnef方法,则当信号处于发送状态时,线程会得到信号,继续向下执行。可见,没有信号时,WaitOne()后面的语句都不执行(被阻塞),当Set()释放信号后,所有阻塞的线程都开始继续执行。3.WaitOne等待信号的发送(在需要等待信号的线程中调用WaitOne方法,该方法会阻塞当前线程,直到收到信号);
2024-01-03 14:33:10
866
原创 C# WinForm窗体移动(在窗体没有格式的时候是不能进行窗体移动的)
【代码】C# WinForm窗体移动(在窗体没有格式的时候是不能进行窗体移动的)
2023-08-08 23:09:14
491
原创 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
2403
1
原创 Modbus tcp和Tcp/ip有什么区别
同时,TCP/IP协议也是一种可扩展的协议,可以方便地与其他通信协议进行集成,从而实现更加复杂的通信和数据处理功能。TCP/IP协议是互联网上最常用的协议之一,它是Internet协议族的核心协议。TCP/IP协议提供了一种可靠、灵活、通用的数据传输方式,使得互联网上不同的计算机和网络之间可以互相通信和交换信息。TCP/IP协议还包括许多其他的协议,如用户数据报协议(UDP)、网络时间协议(NTP)、域名系统协议(DNS)等。它的协议结构简单明了,包括了应用层、传输层和网络层。Modbus TCP采用。
2023-07-13 16:07:59
10206
原创 多线程的初步使用和扩展封装
如果由一个任务需要开启一个线程来执行,然后线程执行完毕以后,需要另外做点别的事情该如何解决呢?ThreadStart thread线程开启要执行的;Action actionCallback之后要做的。有人会想到用 线程阻塞JOin完成,这样做可以达到效果,但会出现卡界面的现象,所以就有了新的思路方法:把两个任务都存放到一个委托李=里面。通过更改调用的顺序,参数的顺序,发现,无论如何变化,
2023-07-08 21:18:33
143
原创 C#部分定义的区别(包含Tcp和Udp,抽象类和接口,抽象类和虚方法等)
C#值类型和引用类型的区别,静态常量Const和动态常量ReadOnly的区别,委托delegate和事件event的区别,抽象类abstart与虚方法virtual的区别
2023-07-07 17:30:27
186
原创 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
1622
原创 C#反射(通过反射的方法,获取成员,并调用成员)(通过反射更新功能)
获取引用类的字段:获取所有公共字段type.GetFields();获取特定字段:type.GetField()返回当前实例的准确运行类型,而不是对象。1.通过反射的方法,获取成员,并调用成员。获取引用类的方法有点特别。
2023-07-06 22:46:06
4143
原创 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
4026
原创 文件的读写(File类和读写流)
写入:没有文件会自己创建;写入:没有文件会自己创建;1.1 StreamWrite 写入流。1.2 StreamWrite 写入流。创建打开文件并写入 :会自动创建文件。2.2 StreamRead 读取流。1.3File类写入。2.1 Filel类。
2023-07-05 21:19:16
596
1
原创 九.类相关(抽象类,接口类,多态(包含抽象方法与虚方法virtual的区别,抽象类与接口的区别)密封类,部分类-)
接口类使用Inteface关键字定义;接口里面只能有属性,方法,索引器,事件;一般来说接口中是不建议方法有方法体;接口不能实例化,也不能通过接口本身互访,必须需要被实现类继承。
2023-06-20 22:11:46
728
1
原创 八.继承(方法的调用)
上面说过 子类本身实例时,会默认调用构造函数,同时因为继承原因,会优先调用父类的构造函数。调用方法的时候只会调用自己的方法。当调用方法为普通方法时,此时还是属于父类的引用,因此不能调用子类的方法(需要子类自己实例调用)。在继承中,子类重写方法,父类对应的方法是需要为 虚方法即(value关键字定义);1.继承是面向对象程序设计中最重要的概念之一;是面向对象的三大特征之一;class 派生类:基类。2.可以理解为子类(派生类)继承父类(基类);6.格式:class 基础类。当输出带有字段的时候,
2023-06-19 09:20:17
673
原创 五.构造函数(实例构造,静态构造,私有构造)
私有构造函数是一种特殊的实例构造函数,通常只包含静态成员的类中。如果类中只有一个或多个私有构造函数而没有公共构造函数的话,4.倘若在类的声明中没有显式的提供构造函数,这种情况编译器会提供一个隐士的默认构造函数:不带参数,方法体为空;7.在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数以初始类化;注意:当一个类只有一个私有构造函数,或多个私有构造函数而没有。6.用户无法控制程序中静态构造函数的执行时间;,静态构造函数将在创建第一个实例或引用类中的。8..静态构造函数会在实例构造函数之前运行;
2023-06-17 19:03:35
168
原创 六.静态常量(Const)和动态常量(Readonly)
注意:readonly和const达到的效果相同,都是让变量无法再修改;5.具有静态属性,是静态的成员,但不需要通过static关键字来定义;.可以在类constructor里改变它的值.不能作用于局部变量;4.对于类的不同对象而言,动态常量可以不一样;4.每个类的实例,静态常量都一样;,并且之后不能进行数据修改,即。,且定义时不能进行初始化,可以。8.可以出现在方法和类中;1.静态常量Const。3.定义时没有限制;
2023-06-17 14:51:10
355
原创 String字符串常见APi(API:字符串转数组,字符串替换,字符串去空格,截取,插入以及字符串的各种判断(如:Contains是否含有,判断开头,结尾等)
包含多种API 如:字符串转数组,字符串替换,字符串去空格,截取,插入以及字符串的各种判断(如:Contains是否含有,判断开头,结尾等)
2023-06-17 11:23:20
468
原创 Tcp协议
基础知识Tcp服务端:IP-端口-占用两个字节:0-65535;特殊端口不要使用,如:21,22,8080;Tcp客服端:多个客户端可以连接一个服务端;服务端和客户端之间的通信是双向的,但是客户端之间不能直接进行通信;通信过程:客户端-服务端-客户端;协议关键字:Socket是C#提供的一个用于通信的类库,其中包括TCP协议的开发。
2023-05-19 19:23:50
192
原创 基于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
5839
1
原创 C#网格控件dataGridView(利用List列表和DataTable数据表绑定dataGridView)构建数据表
C#网格控件(List列表和DataTable数据表)操作,利用DataTable来对网格进行增加删除
2023-04-08 17:09:45
9355
原创 C#方法(完整篇-包含了:参数(out,ref)的关键字,方法调用顺序,方法的栈帧以及递归调用实现斐波那契数列等内容)
本文主要针对C#方法 ,对C#方法的var关键字,方法参数类型,方法命名参数,参数的关键字,方法的调用顺序,方法的栈帧,递归进行归纳整理,本文内容由本人自己总结,若有不足之处,欢迎留言补充,指正。
2023-03-23 20:46:18
1368
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人