C#
文章平均质量分 69
小猫会飞
这个作者很懒,什么都没留下…
展开
-
C#把一片非托管内存 拷贝到 另一片非托管内存
C#非托管内存之间的拷贝原创 2022-08-11 10:22:50 · 1216 阅读 · 0 评论 -
优化C#程序的四十七种方法
1、使用非内存资源,它必须有一个终结器,垃圾收集器在完成没有终结其的内存对象后,会将实现了终结器对象的添加到终结队列中,然后垃圾收集器会启动一个新的线程来运行这些对象上的终结器,这种防御性的变成方式是因为如果用户忘记了调用Dispose()方法,垃圾回收器总是会调用终结器方法的,这样可以避免出现非托管的内存资源不被释放引起内存泄漏的问题;释放所有的托管资源;1、互操作有三个方面的代价数据在托管堆和非托管堆之间的列举成本,托管代码和非托管代码之间切换的成本,对开发人员来说与混合环境打交道的开发工作;...转载 2022-07-19 15:08:08 · 468 阅读 · 0 评论 -
C# 删除文件夹
//删除文件夹 public bool DeleteDir(string file) { try { //去除文件夹和子文件的只读属性 //去除文件夹的只读属性 System.IO.DirectoryInfo fileInfo = new DirectoryInfo(file); fileInfo.A...原创 2021-07-01 11:53:49 · 496 阅读 · 0 评论 -
C# 读写TIF文件,OpenCV存一个16位Tif文件
//把读取的16位tif数据,存入short数组中,要进行高低位相加 short[] retShortArray; private void ReadTiff(string fileName) { List<byte[]> listData = new List<byte[]>(); Tiff tif = Tiff.Open(fileName, "r"); if (tif == null) return;...原创 2020-12-20 10:49:35 · 2025 阅读 · 2 评论 -
转 C#程序中将图片转换为byte数组,并将byte数组转换为图片
转https://www.cnblogs.com/baofengxue00/p/4720852.htmlC#程序中将图片转换为byte数组,并将byte数组转换为图片/// <summary>/// 将图片以二进制流/// </summary>/// <param name="path"></param>/// <returns></returns>public byte[] SaveImage(String path转载 2020-09-01 17:30:47 · 1792 阅读 · 0 评论 -
C#的反射好文链接
C#的反射(一)https://www.cnblogs.com/dcz2015/p/11058193.html原创 2020-05-29 08:33:40 · 117 阅读 · 0 评论 -
【转】C# 使用消息队列,包括远程访问
可以使用MSMQ来实现C#和C++端打印日志,C#写一个服务取出消息打印到本地,参考如下出处:http://www.cnblogs.com/80X86/p/5557801.html近期做一个小的功能需求,用到了队列,用的时候出了很多问题,现在总结一下,希望能对有需要的人提供帮助。 我的需求很简单,就是多个客户端连接到我的一个小型的数据转发服务器上,开始使用的是Socket通信实现这个功能,一旦数据服务器接收到来自不同客户端发来的消息,就对这些消息进行处理(我这里是将数据接收到后再转发到另...转载 2020-05-11 11:27:15 · 529 阅读 · 0 评论 -
正则表达式,判断是否为float uint int
正则表达式,判断是否为float uint int string sRule = ""; switch (InputType) { case ValueType.floatType: sRule = @"^[+-]?\d+(\.\d)?$";//floa...原创 2020-04-23 13:22:15 · 1268 阅读 · 0 评论 -
Net Framework的源码传送门
Net Framework的源码链接https://referencesource.microsoft.com/#mscorlib/system/threading/interlocked.cs,52be0cc9b3954ae9原创 2020-03-24 11:02:54 · 131 阅读 · 0 评论 -
C# 多线程Task Await文章链接
C#当中使用async和await WaitAllhttps://www.cnblogs.com/dcz2015/p/11004585.htmlC# 彻底搞懂async/awaithttps://www.cnblogs.com/zhaoshujie/p/11192036.htmlTask WaitAll和WaitAny源码https://blog.csdn.ne...原创 2020-03-24 10:06:20 · 178 阅读 · 0 评论 -
C# 一些知识链接
静态构造函数https://www.cnblogs.com/liuqiyun/p/9880985.html原创 2020-02-23 19:34:48 · 93 阅读 · 0 评论 -
C# 各种设计模式的实现
参考https://www.cnblogs.com/JiYF/p/6896458.html转载 2020-01-17 10:32:32 · 293 阅读 · 0 评论 -
C# 内存结构 ,以及大对象堆的管理,大对象堆引发OutOfMemory异常
C#的内存分类由于C#是一种托管语言,它的垃圾回收机制(GC)是由.net平台负责的,加之C#语言并没有指针,所以我们在使用过程中极少会考虑到内存使用状况以及项目在运行过程中是如何进行内存管理的。但是,C#只是在内存管理方面对程序员隐藏了,并不代表它不涉及这些东西,甚至其内部内存管理或许比自己手动管理更加复杂。参考前面文章中的内存分类——四分类,本文会依据自己的理解,从这四个分类来说明。...原创 2020-01-16 13:39:01 · 2691 阅读 · 1 评论 -
大对象堆引起的OutOfMemoryException原理和解决办法
该问题的英文讨论贴:https://github.com/dotnet/coreclr/issues/555========C#:.NET陷阱之五:奇怪的OutOfMemoryException----大对象堆引起的问题与对策http://blog.sina.com.cn/s/blog_47642c6e0102vh0v.html我们在开发过程中曾经遇到过一个奇怪的问题:当软件加载了很...转载 2020-01-16 11:09:32 · 770 阅读 · 0 评论 -
C# const和readonly的区别分 深度分析
const是静态常量,const是编译时常量;readonly是动态常量,是运行时常量,const较高效,readonly较灵活。1.访问方式const默认是静态的,只能由类型来访问,不能与static同时使用;readonly默认是非静态的,由实例对象来访问,可以显示使用static定义为静态成员;2.修饰内容const只能应用在值类型和string类型上,其他引用类型常量只...原创 2020-01-14 11:23:22 · 402 阅读 · 0 评论 -
C# 学习宝地
这是一篇学习C#的风水宝地https://www.runoob.com/csharp/csharp-reflection.html原创 2020-01-08 11:47:25 · 104 阅读 · 0 评论 -
C# 特性(Attribute)
转载:https://www.runoob.com/csharp/csharp-reflection.htmlC#反射(Reflection)反射指程序可以访问、检测和修改它本身状态或行为的一种能力。程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以...转载 2020-01-08 11:46:12 · 332 阅读 · 0 评论 -
C#反射
原文地址:https://www.cnblogs.com/xuan666/articles/10643585.html一、反射的概念:反射提供了封装程序集、模块和类型的对象(Type类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。如果代码中使用了属性,可以利用反射对它们进行访问。一般使用:工厂类,通过反射创建类的实例,...转载 2020-01-07 16:20:51 · 107 阅读 · 0 评论 -
杀进程demo 代码和脚本
脚本.batTASKKILL /F /IM calc.exe代码private void KillProcess() { List<string> killProcessList = new List<string>() { "calc" }; Process[] pProcess; ...原创 2019-12-10 14:34:31 · 282 阅读 · 0 评论 -
C# 创建文件夹 读写TXT文件
写内容应该使用UTF8格式,不然读出来可能会是乱码 string curTimePath = tmpPath + @"\" + DateTime.Now.ToString("yyyyMMddHHmmss"); if (!Directory.Exists(curTimePath)) { ...原创 2019-12-05 09:36:20 · 772 阅读 · 0 评论 -
MVVM模式下,线程与UI同步绑定集合的一种方式
MVVM模式下,想要在ViewModel下去更新一个绑定在UI的集合,如果在线程中去更新这个集合,可以使用Application.Current.Dispatcher.Invoke。也可以使用一下这种方式。我使用SynchronizationContext 来进行同步,代码如下,每次更新这个集合都会同步到UI线程中去执行,看起来很nice。SynchronizationContext 简单...原创 2019-11-06 12:32:04 · 846 阅读 · 0 评论 -
WPF: 使用CommandManager.InvalidateRequerySuggested手动更新Command状态
转https://www.cnblogs.com/zjoch/p/3647236.htmlWPF: 使用CommandManager.InvalidateRequerySuggested手动更新Command状态WPF判断命令(Command)是否能够执行是通过ICommand.CanExecute事件,在实际程序中路由命令一般是通过CommandBinding来使命令得到实际操作代码,但...转载 2019-10-31 13:03:56 · 507 阅读 · 0 评论 -
C# Collection使用Linq排序的方法
public static void Sort<TSource, TKey>(Collection<TSource> source, Func<TSource, TKey> keySelector) { List<TSource> sortedList = source.OrderBy(keySelect...原创 2018-08-09 10:56:40 · 2452 阅读 · 0 评论 -
共享内存大数据量快速进程间通讯
最近在做一个进程间频繁,数据量比较大的通讯采用的是共享内存通讯,和生产者消费者模式。调试了几天,记录一些要点结构如下图注意:1、因为是共享,如果进程B有多个对象要写数据到共享内存,每次写入计数和使用缓冲队列索引的时候都要使用全局的,如果不方便全局那也用共享内存来存储这两关键计数。2、进程B在循环写入数据的时候加锁。3、进程A读取缓冲队列里最新的数据,是通过读写入计数前后两次差值来确定的,如果超过了...原创 2018-07-13 11:45:25 · 3137 阅读 · 3 评论 -
共享内存的一个问题
C++侧创建的共享内存,在C#侧可以读到,但是不能以 const int FILE_MAP_WRITE = 0x0002;方式MapViewOfFile,GetLastError()返回0x05,拒绝访问,查看MSDN,有这么一句话Prefixing the file mapping object names with "Global\" allows processes to communica...原创 2018-07-12 13:27:37 · 431 阅读 · 0 评论 -
C# 简答操作共享内存方法
C#操作共享内存的一个帮助类,读写和打开 class ShareMemoryHelper { [DllImport("Kernel32.dll", CharSet = CharSet.Auto)] private static extern IntPtr OpenFileMapping(int dwDesiredAccess, [MarshalAs(U...原创 2018-07-12 13:20:45 · 4908 阅读 · 1 评论 -
WCF通讯经常出现的超时问题,以及解决方法
WCF通讯经常出现超时问题第一种超时问题:客户端与服务端建立连接的时候如果没有设定参数,默认客户端在10分钟内没有与服务端通讯,则连接会断开,提示连接超时问题解决方法一客户端保留连接信息,使用try catch语句捕获异常,在catch语句中重新与服务端建立连接解决方案二客户端在建立连接的时候就设定参数,但是长连接也会占用系统性能,视连接数量而定,保持太多连接没有什么好处 p...原创 2018-07-02 17:08:43 · 8638 阅读 · 0 评论 -
把自己的UI永远至于其他进程的UI之上
无论如何切换,都让自己的UI始终处于其他进程的UI之上需要的API [DllImport("user32.dll", SetLastError = true)] static extern int SetWindowLong(IntPtr hWnd, int nIndex, IntPtr dwNewLong); const int GWL_HWNDPARE...原创 2018-06-06 07:48:16 · 336 阅读 · 0 评论 -
把别人的exe嵌入自己的主窗体中
所谓绑架就是把其他Win32程序的窗体嵌入到我们托管的WinForm中.网上已经用很多java版和 Delphi版还有WPF的.我在这里补充C#版的. C# 实现窗口"绑架" 所谓"绑架"就是把其他Win32程序的窗体嵌入到我们托管的WinForm中.网上已经用很多java版和Delphi版还有WPF的.我在这里补充 C#版的.定义需要的Win32 API. 需要注意的...转载 2018-08-01 17:08:09 · 4241 阅读 · 0 评论 -
屏蔽文本框非法输入
屏蔽文本框非法输入 protected override void OnTextChanged(TextChangedEventArgs e) { TextChange[] change = new TextChange[e.Changes.Count]; e.Changes.CopyTo...原创 2018-09-11 09:32:29 · 207 阅读 · 0 评论 -
ListView列表头排序功能
附加依赖项属性http://www.thomaslevesque.com/2009/08/04/wpf-automatically-sort-a-gridview-continued/原创 2018-12-17 13:09:03 · 471 阅读 · 0 评论 -
获取文件路径
获取文件路径 class Program { static void Main(string[] args) { //获取当前运行程序的目录 string fileDir = Environment.CurrentDirectory; Console.WriteLine("当前...原创 2019-01-23 10:01:56 · 337 阅读 · 0 评论 -
C#强制垃圾回收
C#强制垃圾回收 GC.Collect(); GC.WaitForPendingFinalizers();当知道自己写的代码临时new了大数据,并且函数走完不需要了,赶紧强制回收一下...原创 2019-04-12 16:46:34 · 2872 阅读 · 0 评论 -
ListView最后一列右键点击取消当前选择行
思路是1、最后一列始终填满剩余<ListViewx:Name="mListView" SizeChanged="mListView_SizeChanged"> private void mListView_SizeChanged(object sender, SizeChangedEventArgs e) { dou...原创 2019-04-26 09:22:10 · 319 阅读 · 0 评论 -
WPF窗体一直置顶的一种方案
最近遇到一个需要将WPF窗体一直置顶的需求试验了一种方案,记录一下wpf窗体的句柄获取方式,在window窗体load事件中获取窗体句柄,供下面调用windowAPI使用 IntPtr handle; private void Window_Loaded(object sender, RoutedEventArgs e) { ...原创 2019-09-24 11:28:47 · 3895 阅读 · 0 评论 -
捕获程序异常的事件
在程序初始化的时候加入捕获异常的事件,可以在程序出现异常的时候保证程序不崩溃,同时收集异常信息System.Windows.Application.Current.DispatcherUnhandledException += App_OnDispatcherUnhandledException;AppDomain.CurrentDomain.UnhandledException +=...原创 2019-10-08 16:57:25 · 164 阅读 · 0 评论 -
ObservableCollection的泛型查找功能
1.使用Any方法查询 //在数组中查找Name和Age为指定条件的项,只要数组中有一项符合即返回true ObservableCollection<MyTest> lstData = new ObservableCollection<MyTest>() { new MyTest...转载 2018-03-29 15:47:53 · 2625 阅读 · 0 评论