随笔分类 - 【C#&.NET】
摘要:介绍 SynchronizationContext允许一个线程和另外一个线程进行通讯,SynchronizationContext在通讯中充当传输者的角色。另外这里有个地方需要清楚的,不是每个线程都附加SynchronizationContext这个对象,只有UI线程是一直拥有的。 Synchron
阅读全文
摘要:概述 Devexpress 官方文档 Devexpress 中文帮助文档 DevExpress各大版本支持的VS版本和支持的.net版本 关于VS中看不到DevExpress的控件的分析和解决方案和各个版本对VS版本和.net版本支持图 查看是否破解:在vs中点扩展->DevExpress->You
阅读全文
摘要:序列化与反序列化 1、反序列化是不区分大小写的 以下代码可以正常运行 public static void Test() { //反序列化时 不区分大小写的 string jsonString = "{\"name\":\"张三\",\"age\":18,\"sex\":\"男\"}"; var m
阅读全文
摘要:C代码如下: #include "stdio.h" __declspec(dllexport) int Call(int (*qq)(int num),char * str) { printf(str); return qq(123); } 多次验证发现在C#中传委托给C中的函数指针,如果委托不带参
阅读全文
摘要:在一次做上位机Winform程序,需要用GDI技术画图形显示,当界面上增加很多 对象后,再添加时报错"创建窗口句柄时出错" 打开任务管理器,详细信息,添加列,将用户对象和GDI对象显示出来,发现 用户对象接近1W , 问题原因: GDI对象Windows中将GDI对象和用户对象都限制为最大10000
阅读全文
摘要:【1】涉及的知识点 1) windows消息处理函数 protected override void WndProc(ref Message m) 捕获Message的系统硬件改变发出的系统消息 2) 硬件信息类 DriveInfo 关键实现1: 扫描所有存储设备,筛选出U盘 private voi
阅读全文
摘要:C#与C++交互,总体来说可以有两种方法: 利用PInvoke实现直接调用 非托管C++ 利用C++/CLI作为代理中间层 一、非托管C++ 由于C#编写的是托管代码,编译生成微软中间语言,而C++代码则编译生成本地机器码(这种C++也有叫做本地C++或者非托管C++,VC6.0就是用于开发非托管C
阅读全文
摘要:诊断工具 动手实现一个适用于.NET Core 的诊断工具 Dump dump在计算机科学中是一个广泛运用的动词、名词。 作为动词:一般指将数据导出、转存成文件或静态形式。比如可以理解成:把内存某一时刻的内容,dump(转存,导出,保存)成文件。 作为名词:一般特指上述过程中所得到的文件或者静态形式
阅读全文
摘要:以文章:深入了解 WPF Dispatcher 的工作原理(Invoke/InvokeAsync 部分) 为例 查找 Dispatcher.BeginInvoke(...) 的源码 1、查找包名 在VS中编写代码,Dispatcher.BeginInvoke(...) ,定位到Dispatcher对
阅读全文
摘要:System.Diagnostics.StackTrace 1.(new StackTrace()).GetFrame(1) // 0为本身的方法;1为调用方法2.(new StackTrace()).GetFrame(1).GetMethod().Name; // 方法名3.(new StackT
阅读全文
摘要:介绍 .NET Core下主要有三种测试框架:XUnit, NUnit, 和 Visual Studio(MSTest) 除了标注测试类和方法的特性用的不一样之外,都非常相似。 1、NUnit的传值测试: [TestCase(1)] [TestCase(2)] [TestCase(3)] [Test
阅读全文
摘要:在一个程序中 引用了两个不同名称的程序集,他们中都含有某个类,且其命名空间也相同,此时会有冲突。 解决:程序集属性中都有一个别名属性(Aliases),默认为global,可以自己修改 引用时使用extern alias,区分不同版本dll中的类 extern alias low; extern a
阅读全文
摘要:近期在重构老项目时发现有些地方用了AutoResetEvent,于是查了些资料学习整理。 线程同步介绍 即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态,实现线程同步的方法有很多,临界区对象就是
阅读全文
摘要:有高并发的开发需求,首先要规划你的硬件、软件架构,那规划的依据是量化的数据,如PV,QPS;还要清楚软件的特性和用什么技术,然后还要通过性能测试进行辅助,如JMeter , 根据测试工具压测,得出整体服务的响应时间,吞吐量,另外还要对数据进行分析,看是否存在数据错乱的情况。 缓存 主要是避免数据库I
阅读全文
摘要:最近在使用vs编码时,重构提示:模式匹配 运用模式匹配可以简写为: 模式匹配在C# 7.0中引入 https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-7#pattern-matching 在8.0中又有增强。 C# 8.0中
阅读全文
摘要:做个总结形成自己的知识体系,方便查阅【持续更新...】 .NET在线编程:try.dot.net .NET Blog dotnet/try-convert 【帮助.NET开发者将他们的项目移植到.NET Core上!】 C#语法特性 .Net FrameWork发展史 C# 语言版本发展史 .NET
阅读全文
摘要:Where T:class 泛型类型约束 对于一个定义泛型类型为参数的函数,如果调用时传入的对象为T对象或者为T的子类,在函数体内部如果需要使用T的属性的方法时,我们可以给这个泛型增加约束; //父类子类的定义 public class ProductEntryInfo { [Description
阅读全文
摘要:一、List排序 采用自定义Sort比较器和Linq class Persion { public string name; public int age; } //自定义Sort方法 private static void sortListClass() { Persion p1 = new Pe
阅读全文
摘要:Dictionary 类型:System.Collections.Generic.Dictionary eg:Dictionary<string, int> illegParking = new Dictionary<string, int>(); 键:inData.LOTID 值:inData.I
阅读全文
摘要:Ninject是一个IOC容器,用来解决程序中组件的耦合问题,它的目的在于做到最少配置。简单来讲就是 为我们选择一个想要的类来处理事务。 百度百科的解释:一个快如闪电、超轻量级的基于.Net平台的依赖注入框架。把应用程序分离成一个个松耦合、高内聚的模块,然后用一种灵活的方式组装起来。 一、Conso
阅读全文