摘要:
情景:A项目是主项目,B项目是被引用程序集, 众所周知C#项目和被引用程序集编译时会生成在同一目录 如果想让A.exe和B.dll生成不在统一目录,但是又存在依赖关系应该怎么做呢? 实现原理分为两步 1、配置生成逻辑 2、动态加载DLL 1、配置生成逻辑: 打开A.csproj文件,找到 <Proj 阅读全文
摘要:
该Demo使用是纯C#编写(不建议使用XAML做动画效果,内存开销不可控且不便操作) 效果:速度、启动、暂停、缓动效果、线性渐变 代码如下 using System; using System.Text.RegularExpressions; using System.Windows; using 阅读全文
摘要:
RGB Alpha通道混合 首先定义一个ARGB数据,假定它为樱花粉 var argb = Color.FromArgb(200, 255, 0, 0); Color.FromArgb(参数1:Alpha通道,参数2:Red通道,参数3:Green通道,参数4:Blue通道) 将该数据套入下方公式, 阅读全文
摘要:
客户端由于使用的是ThinyLinux系统(安装NTP时区不方便),默认是UTC(协调世界时) 服务端时区是北京时间,客户端拿到服务端时间后使用DateTime类型相关操作所导致时间变为UTC时间 此时我们需要做一个时区矫正的操作由UTC时间更正为UTC+8时间 也就是说在客户端时间+8小时就是北京 阅读全文
摘要:
文章环境:由于本地是TinyLinux上执行的.Net Core程序,本机CPU Clock长时运行会发生日期偏差,所以本地时间是不正确的,由于规模作业NTP配置繁琐,所以我准备通过服务端授时,为了保证轻量化,这里博主使用nginx作为授时工具。 nginx官网http://nginx.org/en 阅读全文
摘要:
众所周知VS2022将不再支持.NET4.5,即使在Visual Studio Installer中也找不到.NET4.5的选项 在不改变项目结构的情况下,要么选择继续使用VS2019,当然博主已经卸掉了,那么还有什么方法呢? 我们可以在NuGet包中下载.NET 4.5的工具包 将PM:后的代码复 阅读全文
摘要:
问题描述: 在C#中使用PerformanceCounterCategory(性能计数器)数据读取时,会存在对该方法调用的线程可能无限挂起,可能出现该问题的原因如下: 性能计数器的读取需要枚举系统上的打印机,存在(无效/错误)的打印机或驱动 未安装IIS全家桶 相关StackOverflow:什么会 阅读全文
摘要:
//执行bat批处理 public static void Main() { ProcessStartInfo myBat = new ProcessStartInfo() { FileName = "D:\\temp\\myBat.bat", WorkingDirectory = Director 阅读全文
摘要:
在.NET4中Task.Factory.StartNew是调度新任务的主要方法,提供了许多任务调度功能与配置 但对于只需要开启新的后台任务委托来说书写起来并不够快 因此,在.NET Framework 4.5中,引入了新的Task.Run方法。这并不是说Task.Factory.StartNew过时 阅读全文
摘要:
众所周知DataGridColumns不是可视化树的一部分,所以无法进行相对绑定,因此它们不连接到DataGrid 此时我们可以在父级节点进行元素代理,使用该元素的DataContext <Grid> <Grid.Resources> <FrameworkElement x:Key="ProxyEl 阅读全文
摘要:
###效果 #####我在GitHub开源地址:https://github.com/adsf130162/WPF-DataGrdDragRow #####使用MIT开源HandyControl样式库:https://github.com/HandyOrg/HandyControl ###首先定义一 阅读全文
摘要:
结论: List性能要优于DataGrid,两者的源码实现都是基于数组数据结构 在增删DataTable时,会维护一张索引表,性能与List差距很大 在遍历DataTable时,会存在object 装箱操作 DataTable索引时基于RBTree实现(红黑二叉树) 题外话: 当我们对读写性能都有要 阅读全文
摘要:
在FreeSql源码中Expression表达式拼接默认最多支持到5个泛型参数,当我们使用表关联比较多的时候,就需要进行扩展。 新建一个类,将命名空间改为System.Linq.Expressions,并加入参数扩展 namespace System.Linq.Expressions { stati 阅读全文
摘要:
MVVMLight默认IOC容器是SimpleIOC,但该容器并没有实例的生命周期管理,也就是说默认是单例模式 在某些业务场景中,可能并不需要单例,而是每次都创建新的实例,下面是SimpleIOC使用一次性实例的用法 /// <summary> /// 打开某某窗口 /// </summary> p 阅读全文
摘要:
相信大家在阅读WPF相关GitHub开源项目源码时都会看见一串串这种数据 这种Geometry数据就是几何图形数据 为什么要用Geometry数据做图标? 有一种做法是使用ttf字体文件代替,不过使用ttf字体文件会出现下面几个缺点: 1、团队协作不便于管理 2、需要依赖特定平台 3、无法灵活使用 阅读全文
摘要:
通常(例如:对于List 而言),Clear()实际上不会释放任何内存,它只会使集合显示为空。 New一个新集合将使原始集合可以使用GC(前提是不再有其他引用),并分配一个全新的集合。 哪个更好取决于多个因素,Clear()趋向于“更快”(不重新分配内存),但是会导致分配的内存持续更长的时间,进而导 阅读全文
摘要:
开门见山的说 性能对比: 在Demo中,DataGrid与ListView默认开启虚拟化(可以理解为动态渲染,类似懒加载只渲染屏幕可以看见的地方) DataGrid渲染10列50行随机字符280ms ListView渲染10列50行随机字符80ms 场景选择: ListView只生成需要展示的数据类 阅读全文
摘要:
前言:锐浪报表是一种中国式报表的报表开发工具。博主使用锐浪报表有一段时间了,积累了一些经验希望能帮助你快速掌握并使用 集成项目 首先我们先去锐浪报表官网下载并安装锐浪报表。 创建WPF应用程序。(C/S端使用锐浪报表基本都一样) 添加锐浪报表的引用,在资源管理器目录中找到引用并右键,点击添加引用。 阅读全文
摘要:
下面放一张效果图: 那么具体是怎么实现呢: 前端XAML中: <Image Source="/Images/tips.png" HorizontalAlignment="Left" Width="25" Height="25" MouseEnter="Image_MouseEnter" MouseL 阅读全文
摘要:
当我们把ARGB压缩为RGB数据时,会丢失A透明通道 那么就有可能会遇到反推A透明通道的问题 原理很简单,取RGB三色最大通道除255得到A通道 Random random = new Random(); byte red = Convert.ToByte(random.Next(0, 0xff)) 阅读全文
摘要:
这种问题一般是蓝牙串口的问题,即使设置了SerialPort.TimeOut也是没有用的,需要验证串口名称,跳过该串口SerialPort.Open()步骤 这种有问题的蓝牙串口设备名称中会带有BTHENUM 那么我们就要取到串口名称,C#提供的SerialPort类只能取到串口编号,所以我们需要借 阅读全文
摘要:
点A(x1,y1) 点B(x2,y2) k代表斜率,b为常数 y1 - y2 k = ————————— x1 - x2 y1 = k * x1 + b y2 = k * x2 + b y2 = k * x2 + ( y1 - k * x1 ) y1 = k * x1 + ( y2 - k * x2 阅读全文
摘要:
private static ushort Calc(byte[] data) { ushort wCRC = 0; for (int i = 0; i < data.Length; i++) { wCRC ^= (ushort)(data[i] << 8); for (int j = 0; j < 阅读全文
摘要:
public static string BashCommand(string cmd) { var escapedArgs = cmd.Replace("\"", "\\\""); var process = new Process() { StartInfo = new ProcessStart 阅读全文
摘要:
public static class InstalledPrograms { const string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; public static List<string> 阅读全文
摘要:
当我们遇到这个问题时首先需要观察的是被什么样的应用程序覆盖,一般来说是被使用OpenGL、DirectX(DX)等渲染引擎覆盖 比如GeForce Experience(nVidia显卡工具)的Alt+Z功能、Steam的Shift+Tab功能会覆盖掉我们的应用程序,Fraps的帧率显示 这些程序接 阅读全文