C#
文章平均质量分 62
Net Core,Net Framework
谷棵
1、当下的思绪,让我的生活充实而又灵动
2、如果你想做,就去做吧(知就是行,行就是知)
展开
-
WPF Menuitem边框
本文介绍了WPF Menuitem边框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!转载 2024-06-05 14:42:13 · 90 阅读 · 0 评论 -
WPF RelativeSource属性-目标对象类型易错
详细介绍下AncestorLevel,它指的是以Bingding目标控件为起点的层级偏移量,S1的偏移量是1,G2的偏移量是2,G1是偏移量3,AncestorType指的是要找的目标对象的类型。AncestorType=TabItem,往上查找第一个TabItem控件,其Height="30",这样ScrollViewer的MaxHeight=30,直接造成显示不全。},则Bingding在寻找时会忽略非Grid的控件,此时G2的偏移量是1,G1的偏移量是2,StackPanel被忽略。原创 2023-11-01 18:05:08 · 1817 阅读 · 0 评论 -
WPF RelativeSource属性
详细介绍下AncestorLevel,它指的是以Bingding目标控件为起点的层级偏移量,S1的偏移量是1,G2的偏移量是2,G1是偏移量3,AncestorType指的是要找的目标对象的类型。我们进行Bingding时,如果明确知道数据源的Name,就能用Source或者ElementName进行绑定,但是有时候我们需要绑定的数据源可能没有明确的Name,此时我们就需要利用Bingding的RelativeSource进行绑定,这种办法的意思是指当前元素和绑定源的位置关系。转载 2023-11-01 16:29:48 · 246 阅读 · 0 评论 -
Lock使用及效率分析(C#)
针对无Lock、Lock、ReadWriterLock、ReadWriterLockSlim四种方式,测试在连续写的情况下,读取的效率(原子操作Interlocked由于使用针对int,double等修改的地方特别多,而且使用范围受限,所以本文章没有测试)原创 2023-10-13 14:22:09 · 453 阅读 · 0 评论 -
C# 依赖注入:AddTransient、AddScoped、AddSingleton的理解
AddTransient: 每次service请求都是获得不同的实例,暂时性模式:暂时性对象始终不同,无论是不是同一个请求(同一个请求里的不同服务)同一个客户端,每次都是创建新的实例。AddScoped: 对于同一个请求返回同一个实例,不同的请求返回不同的实例,作用域模式:作用域对象在一个客户端请求中是相同的,但在多个客户端请求中是不同的。AddSingleton: 每次都是获得同一个实例, 单一实例模式:单一实例对象对每个对象和每个请求都是相同的,可以说是不同客户端不同请求都是相同的。转载 2023-10-12 17:46:47 · 2332 阅读 · 0 评论 -
TPL DataFlow 之一 ActionBlock
ActionBlock及ExecutionDataflowBlockOptions使用,实现数据并行处理,比起消费者队列更有优势转载 2023-09-08 14:43:54 · 299 阅读 · 0 评论 -
interface和abstract的区别
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。比较两者语法细节区别的条理是:先从一个类中的构造方法、普通成员变量和方法(包括抽象方法),静态变量和方法,继承性等6个方面逐一去比较回答,接着从第三者继承的角度的回答,特别是最后用了一个典型的例子来展现自己深厚的技术功底。父类方法中间的某段代码不确定,留给子类干,就用模板方法设计模式。转载 2023-09-07 19:18:54 · 141 阅读 · 0 评论 -
NetCore基于Roslyn的动态编译实现
AvalonEdit文本器+NRefactory+Roslyn动态编译1. AvalonEdit实现编写,高亮,复制,黏贴,撤回等基础功能2. NRefactory实现代码提示相关3. Roslyn实现动态编译(CSharpCodeProvider只支持Framework,Roslyn可以同时支持Framwork和netcore)原创 2022-12-13 18:48:43 · 2041 阅读 · 0 评论 -
wpf datagrid高刷引起界面卡顿问题探索
wpf datagrid UI高刷原创 2022-11-28 14:46:07 · 3118 阅读 · 0 评论 -
ORM(对象关系映射)
ORM(对象关系映射)一、ORM简介 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射 的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单...转载 2020-04-29 09:30:20 · 983 阅读 · 0 评论 -
Winform内存溢出的几种情况
工业视觉领域,内存移除往往是综合问题,现总结出几年来项目中遇到的内存溢出问题一、首先明确两个概念:内存和提交内存内存(专用工作集)/WS Private/ Private WS: 工作集的子集,它专门描述某个进程正在使用且无法与其他进程共享的物理内存值。这个值对于一个进程来说也是最重要的,它代表了一个进程到底独占了多少物理内存。提交大小/ Private Bytes/ Private: 给当前进程使用而保留的私有虚拟内存的数量,从名字里面的Private可以看出它是专有的,但是和上面的WS Pr原创 2021-11-24 16:09:43 · 3354 阅读 · 0 评论 -
如何从仿射矩阵得到旋转和平移
1、配准的点对得到仿射矩阵: M = cv2.estimateAffinePartial2D(point1s, point2s,maxIters=200,ransacReprojThreshold= 30)// estimateAffinePartial2D 使用ransca 从多对匹配点得到最优的仿射阵2、 R = M[0][0:2,0:2] // M 是2行3列的矩阵 , 其中前两列是旋转矩阵R, 第3列是平移量t det_r = det(R) R 是一个正交矩阵 , 行转载 2021-01-19 21:29:32 · 2721 阅读 · 0 评论 -
advTree的拖拽和禁用操作
advTree的拖拽和禁用操作默认情况下advTree启用了自动可以自身层级互相拖拽1此时如果想完全禁止拖拽只需要把advTree.DragDropEnable=false;即可 2.此时需要只是禁止advTree自身的拖拽 ,不影响它把数据拖向其他控件需要在事件 advTree_BeforeNodeDrop里面进行控制代码如下:private void advTree_BeforeNodeDrop(object sender, TreeDragDropEventArg...转载 2021-01-18 15:07:12 · 544 阅读 · 0 评论 -
C#类型定义变化不会影响反序列化的几种情况
C#对象持久化的步骤为:使用诸如BinaryFormatter类型,把类型实例(对象)序列化到流中,接着就可以把流保存到二进制文件。下次需要对象时,可以把这个二进制文件读到流中并反序列化为一个object对象,然后转换为原来的对象。 如果对象的类型在序列化后做了修改,那么反序列化为新类型对象的情况如何呢?笔者测试了如下几种情况,反序列化均是成功的: 1)增加成员字段、增加属性、增加索引、增加函数、增加接口继承和实现。 2)删除属性、删除索引、删除...转载 2021-01-05 20:29:37 · 284 阅读 · 0 评论 -
通过文件路径获取文件名
通过文件路径获取文件名 string fullPath = @"\WebSite1\Default.aspx";string filename = System.IO.Path.GetFileName(fullPath);//文件名 “Default.aspx”string extension = System.IO.Path.GetExtension(fullPath);//扩展名 “.aspx”string fileNameWithoutExtension = System.IO.Path.转载 2020-06-30 22:03:28 · 566 阅读 · 0 评论 -
File.Exits(filePath)返回值总为false问题分析
一、msdn解释:If the caller does not have sufficient permissions to read the specified file, no exception is thrown and the method returns false regardless of the existence of path.如果调用方没有足够的权限读取指定的文件,...原创 2020-04-10 12:16:16 · 410 阅读 · 0 评论 -
线程封装组件(BackgroundWorker)和线程(Thread)
转载:https://www.cnblogs.com/tohen/p/7644682.htmlBackgroundWorker是微软的在.net Framwork中添加的一个组件,主要对线程的访问提供了一种安全的方式。简单的说就是对Thread的一次封装。BackgroundWorker位于System.ComponentModel下,是一个继承了Component的组件,微软...转载 2020-03-16 15:03:19 · 381 阅读 · 0 评论 -
Invoke和BeginInvoke理解
转载:https://www.cnblogs.com/fuchongjundream/p/3939298.html在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate,至于委托的本质请参考我的另一随笔:对.net事件的看法。一、为什么Control类提供了Invoke和BeginInvoke机制?关于这个问题的最主要的原因已经是dotnet程序员众...转载 2020-03-16 13:56:01 · 346 阅读 · 0 评论 -
用Activator.CreateInstance代替new实现类的实例化(转)
一直想得到这样一个函数,输入一个类的名称为参数,返回一个相应的类的实例.这在工厂模式中是非常有用的这样,可以使程序有更高的扩展性,例如,,下面的例子如果现在有一个类,专门用来计算交通工具的速度,不同的交通工具计算方法是不一样的,但是到底有那些交通工具是未知的或者是可变的,这种情况下,我们可能觉得要在添加交通工具的时候,需要修改用来计算速度的那个类,但如果用Activator .Cr...转载 2020-02-11 22:42:52 · 426 阅读 · 0 评论 -
WInForm窗体的this.width和this.height受限于显示器的最大分辨率
比如 1900x1080 分辨率显示器上写的代码,将窗体的宽度和高度 设置成了 1900×1080,在高于1900×1080的分辨率上缩放显示很正常而后转移到 分辨率1366×768缩放就不正常显示了。而后跟踪 this.width ,在分辨率1366×768显示器上this.width值不是1900,而是高于当前显示器的最大分辨率一点点的值(大概1380),鉴于此,以后实际项目中窗体的最大...原创 2020-01-13 11:42:43 · 1465 阅读 · 0 评论 -
C#委托事件的使用
事件可以在类内触发,也可以在类间触发,其使用方法通用;先来看看事件编程有哪些好处。在以往我们编写这类程序中,往往采用等待机制,为了等待某件事情的发生,需要不断地检测某些判断变量,而引入事件编程后,大大简化了这种过程:1、使用事件,可以很方便地确定程序执行顺序。2、当事件驱动程序等待事件时,它不占用很多资源。事件驱动程序与过程式程序最大的不同就在于,程序不再不停地检查输入设备,而是呆着原创 2017-04-21 16:03:22 · 503 阅读 · 0 评论