C#
风雪小喜
这个作者很懒,什么都没留下…
展开
-
记一次因内存不足导致的WPF程序闪退问题
C#程序内存不足问题排查分析原创 2023-05-15 19:02:30 · 1637 阅读 · 0 评论 -
C#实现C++的SYSTEMTIME类型
做上位机开发免不了要调.dll库,最近有个要实现的库给过来,但是没有任何说明文档,只要下来一份C++的调用示例。按部就班,用到哪里写哪里,按照类型字长等,转成C#的类型。碰到SYSTEMTIME,C#没有对应类型,这种情况下需要去到C++类型的定义里面。参考格式,在C#中封装好对应的结构体,C++中WORD对应C#中UInt16。使用的时候再赋值就好了。...原创 2022-06-04 10:50:23 · 1358 阅读 · 3 评论 -
记一次C#windows上闪退系统日志报MSVCR120.dll的问题排查
我们C#运行在.NET Framework上,如果异常没被捕获到,在系统日志里面会有具体的报错。但是如果调用了C++编写的dll,库里面做了什么操作调用了什么我们也不可知晓,这种时候就不会有具体的提示。首先,我们需要知道都调用了哪些库,从库到具体的调用函数一步步排查,从没出问题的版本到出问题的版本一步步对比。这针对的是极端条件下:没有函数说明、没有Demo。如果有就简单多了,有个参照对照就好。最近碰到的情况是供应商没有提供了最新的库,简单说了一下新增的函数调用的作用,但是没有Demo,出现问题后,要去对原创 2022-04-19 22:23:54 · 1707 阅读 · 0 评论 -
反射PropertyInfo.GetValue()取值抛出需使用DBNull的异常
帮朋友改代码,在一个DataTable转换.csv的公共类中碰到这个问题。借鉴这里的问答:反射PropertyInfo.GetValue(对象)抛出DBNull异常 - VoidCC朋友手里的类似这样:row[p.Name] = p.GetValue(obj,null); 项目用的.NET Framework 4,GetValue方法略有区别。改后为:row[p.Name] = p.GetValue(obj,null) ?? DBNull.Value; ...原创 2022-02-24 00:22:47 · 762 阅读 · 0 评论 -
C#做Modbus TCP通讯对接C++注意
1.浮点数类型数值与C++的Dword类型最近对接一份协议使用Modbus TCP,下位机跟硬件的同事给过来的对接协议上对值类型的描述是word跟Dword。一开始并没有想那么多,按照C#惯用的UShort通过BitConverter.GetBytes()转成byte[]根据协议套到指定位置就好,做好给到下位机去测试才发现的问题:在涉及到协议中的Dword类型的值时,给出去或者读取到的值都会有问题。按照同事的说法,他们要的是32位的有符号浮点类型数值。所以,在C#代码中我们使用float即可:原创 2022-01-24 22:15:05 · 3572 阅读 · 0 评论 -
使用NPOI读取Excel报错ICSharpCode.SharpZipLib.Zip.ZipException:Wrong Local header signature
出现这个问题一开始查到这里:使用NPOI读取Excel报错ICSharpCode.SharpZipLib.Zip.ZipException:Wrong Local header signature - shuanzhi - 博客园 (cnblogs.com)虽然不是这种低级问题,但是提供了一种思路:或许是文件本身的问题。后来发现是我研发环境下的电脑会自动加密文件导致文件读取识别不了的,同样,读有损坏的文件应该也会报这个错。...原创 2022-01-19 22:08:04 · 7005 阅读 · 0 评论 -
记一次TCP通讯客户端CPU使用率异常问题
最近有个项目因为需要服务端主动发起调用,因此客户端需要实时等待接收数据。 while (true) { if ((tcpclient != null) && tcpclient.Connected) { if (tcpclient.Available <= 0)原创 2021-11-18 16:04:50 · 1080 阅读 · 0 评论 -
C#对DataTable的列进行排序
dt.Columns["aaa"].SetOrdinal(3);//设置列index原创 2021-09-11 22:50:55 · 2080 阅读 · 1 评论 -
C#对List集合进行查询匹配操作
1.对单个集合进行查询匹配:List<BasicData_Info> res = selectbasics.Where(a => a.ShortcutCode.ToUpper().Contains(teSelect1.Text) || a.ShortcutCode.ToLower().Contains(teSelect1.Text) || a.DataContent.Contains(teSelect1.Text)).ToList();//BasicData_Info,这里是对类原创 2021-08-03 17:12:46 · 5497 阅读 · 0 评论