![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
苦荞米
这个作者很懒,什么都没留下…
展开
-
C# 异步方法的使用场景
整套流程需要紧密衔接,一个关节执行完成后另外几个关节才可以运动,一个动作要等待多个关节全部完成它自己的动作。原因嘛,很简单:如果采用老办法直接新建线程,那意味着每执行一个关节都要建立一个线程,最终要管理无数个乱七八糟的线程。不如使用异步方法,让C#自己建立新线程自己管理,我们只需要在代码中指示不同关节任务之间的衔接方式即可。我一直认为C#的异步方法只是一堆华而不实的东西,坑特别多,比起直接自建线程也没有任何优势。直到有一天,一个需求场景,让我再次想到了C#的异步方法。原创 2024-02-16 21:39:47 · 452 阅读 · 0 评论 -
C# Thread.Sleep 与 await Task.Delay 的本质区别,和异步方法中踩到的坑。
将当前执行代码的线程空出来,优先去执行其他任务。在等待时间结束后,交给线程池中的线程接继续执行。不知道在经过await之后,执行线程可能被切换。挂起当前线程一段时间。原创 2023-11-29 18:37:42 · 928 阅读 · 0 评论 -
C# 静态构造函数未执行 .net core框架
代码如下,在执行Encoding.GetEncoding(“gb2312”);方法后报错,说没有找到对应编码,经测试,发现是静态构造函数未执行。查找了不少相关资料,并未找到任何证据支持上面的观点。不过我尝试了反编译dll,发现dll中还是有构造函数的,应该没有被优化掉。也可能是静态函数的调用方式并非在类加载时调用,而是在实例化。推测是编译器认为静态构造函数无用,被优化掉了。参数时参数才会调用。原创 2023-08-31 10:34:15 · 1350 阅读 · 0 评论 -
C# 子类强制转换为父类异常,引出的C#Dll加载机制,以及同类名同命名空间同dll程序集在C#中是否为同一个类的研究。
可以推测出,C#判断两个类是否完全相同,除了看命名空间和类名以外,主要是判断两个类是否在同一个程序集实体中(内存中的同一个实体)。若一个dll加载了两遍,获得两个程序集对象,虽然两个程序集中的类完全相同,但是依然无法相互转换。经过排查,发现代码中对该dll加载了两次,获得了两个程序集,而子类和父类分别来自不同的程序集,导致了无法进行类型转换。通过上面的代码可以看出,从子类中获取的父类type,和父类直接获取的type是完全一样的,命名空间,类名称,程序集和对应的dll文件,均相同。下面是报错的代码片段。原创 2023-08-09 14:47:29 · 770 阅读 · 0 评论 -
SQLite3 学习笔记 以及C#连接SQLite3
数据库结构在sqlite中,一个文件是一个数据库,一个数据库中可以包含多个表,其中sqlite_master表是数据库的核心表,用于记录其余所有表的基本相关信息。可以使用.table命令查看数据库中的所有表。查看表结构的方法有两种:查询sqlite_master表。使用pragma table_info( );语句,在括号中添上需要查看的表名称数据类型虽然sqlite也有数据类型,但是与我们熟悉的mysql和sqlserver完全不同。SQLite 使用一个更普遍的动态类型系统。在 SQ原创 2021-08-01 17:22:29 · 3976 阅读 · 3 评论 -
如何获取windows api中常量的值。
不得不说,微软的开发文档只告诉你常量的名称和作用,却不告诉你常量的值,导致根本没有办法用。真是搞不明白微软是怎么的想的,例如:https://docs.microsoft.com/en-us/windows/win32/fileio/volume-management-control-codes真是打死不说这些控制代码的值,难道要我调用这些api的时候常数参数输入一个字符串吗?不过找到了一个非常方便的在线工具,里面只要输入常量名称,他就可以告诉你该常量的值。https://www.magnumdb.原创 2021-04-04 16:59:14 · 612 阅读 · 2 评论 -
C# 获取文件占用空间 (绝对准确)
首先说下文件夹/文件大小与占用空间的区别:这与是硬盘分区格式有关。大小是文件的实际大小,而占用空间是占硬盘的实际空间,以FAT32格式为例,硬盘的基本存储单位是簇,在FAT32中一簇是4KB 那么,也就是说即使文件只有1个字节,在硬盘上也要占到4KB的空间 如果文件是4KB零1个字节,那就要占用8KB的空间,以此类推 结论: 大小是文件的实际大小,而占用空间是占硬盘的实际空间。如图(我这里一簇是4kB)计算思路所以,要想获得占用空间,就需要先获得文件的大小,然后就可以通过把簇补全即可算出文件的占用原创 2021-03-18 18:14:24 · 4242 阅读 · 3 评论 -
使用C#解压缩文件,缺失ZipArchive类
网上有很多关于如何解压缩zip文件的,他们都是用到了ZipArchive类。这个类在System.IO.Compression名命空间下,在.NET Framework 4.5加入。我的程序是使用的.NET Framework 4.5.2 但是在该名命空间下并没有这个类,并且网上也没有相关的靠谱的解决方案。最后还是在外网中找到了解决方法。失败的解决方案:在config中添加如下代码:<assemblies> <add assembly="System.IO.Compressi原创 2021-01-03 14:46:10 · 905 阅读 · 0 评论