随笔分类 - .NET
摘要:应用中我们经常使用到数据的复制,在.NET中有多种方式可以实现复制数据或对象。选择哪种方式、是浅拷贝还是深拷贝,具体需求场景可以取决于对象的复杂性、数据量等,本文我们介绍主要的拷贝方式以及相对高性能的方案。 1. MemberwiseClone拷贝 浅拷贝 Object.MemberwiseClon
阅读全文
摘要:记录下Benchmark性能测试使用。 这里以测试数据拷贝场景为例,先安装Nuget-BenchmarkDonet包 添加Benchmark测试类: 1 [MemoryDiagnoser] 2 public class BenchmarkTest 3 { 4 private readonly Ben
阅读全文
摘要:跨进程设置父子窗口除了owner方案 C# 跨进程 设置窗口owner - 唐宋元明清2188 - 博客园,还有Win32-SetParent SetParent 函数 (winuser.h) - Win32 apps | Microsoft Learn SetParent可以实现将子窗口嵌入另一个
阅读全文
摘要:本文介绍如何将窗口置于最顶层,以及解决在顶层显示时对锁屏登录界面的影响等问题。用于实现类似Launcher、系统工具等应用需要窗口层级比Windows开始菜单以及置顶任务栏还要高的场景 一般情况下的窗口置顶,可以设置WPF窗口属性Topmost=true 也可以使用WIN32-SetWindowPo
阅读全文
摘要:.NET 多线程 Task Cancel Result、Wait Continue 异步编程 async、await await原理 同步上下文 死锁 同步、异步 信号发生器 Auto Manual PushFrame TaskCompletionSource 并发、并行 Task并行 Parall
阅读全文
摘要:本文记录在WPF应用中鼠标、触摸混合输入,鼠标事件抬起时不会有MouseUp事件触发的问题。 事件输入我们都知道有3类:鼠标、触摸、触笔,鼠标是windows系统出来就有的事件,后面加了触笔、触摸。 1.鼠标输入,只会触发Mouse冒泡隧道事件; 2.触笔输入,会触发除了Stylus事件外,还会触发
阅读全文
摘要:本文我们介绍针对Bios如何读取、写入数据,比如最常见的SN读取以及烧录。 在传统设备比如PC的工厂制造环节,需要完成数据初始化如SN、设备型号等,然后工厂测试流水线使用厂测软件验证。 还有一些数据需要存储在BIOS的需求,比如一些软件离线激活码,放在磁盘里肯定不合适,换个硬盘激活码就没了,那这种情
阅读全文
摘要:我们都知道结构体struct,在大量创建、引用的场景下相比类class能提升很大性能。本文介绍下如何正确使用struct struct定义 1 struct Point 2 { 3 public float X; 4 public float Y; 5 } 6 7 class Rect 8 { 9
阅读全文
摘要:本文介绍Windows系统设备下如何阻止系统睡眠/息屏,以及查看当前阻止睡眠/息屏的应用信息 powercfg /requests查看活动列表 在播放音乐时,我们会发现设置了系统电源管理-自动睡眠,计划不会生效,这个音频播放操作阻止了系统自动睡眠。但不会阻止息屏,所以Windows下一般屏幕关闭是不
阅读全文
摘要:本文介绍不依赖贝塞尔曲线,如何绘制一条平滑曲线,用于解决无贝塞尔控制点的情况下绘制曲线、但数据点不在贝塞尔曲线的场景。 在上一家公司我做过一个平滑曲线编辑工具,用于轮椅调整加减速曲线。基于几个用户可控制的点,生成一条平滑的曲线,控制点需要保持在曲线上。 今天和小伙伴沟通,白板以自定义形状绘制笔迹,也
阅读全文
摘要:本文介绍如何操作windows系统光标。正常我们设置/隐藏光标,只能改变当前窗体或者控件范围,无法全局操作windows光标。接到一个需求,想隐藏windows全局的鼠标光标显示,下面讲下如何操作 先了解下系统鼠标光标,在鼠标属性-自定义列表中可以看到一共有13种类型,对应13种工作状态: 操作系统
阅读全文
摘要:白板软件书写速度是其最核心的功能,注册StylusPlugin从触摸线程拿触摸点数据并在另一UI线程绘制渲染是比较稳妥的方案,具体的可以查看小伙伴德熙的2019-1-28-WPF-高性能笔 - lindexi - 博客园 (cnblogs.com) 上面StylusPlugin方案能提升在大屏目前如
阅读全文
摘要:使用AppContext.SetSwitch(AppContextSwitchOverrides 元素 - .NET Framework | Microsoft Learn),开启Pointer消息: 1 public partial class App : Application 2 { 3 pu
阅读全文
摘要:触摸书写延迟,是触摸屏很核心的参数。从用户在触摸屏上进行触控操作到设备作出响应之间的时间差,这个延迟高低会影响快速反应的应用场景使用如白板书写、玩游戏。 而触摸延迟主要影响因素有:触摸框报点率、软件框架延时(用于触摸数据接收、线程切换)、软件业务逻辑处理 我们这里介绍下触摸框报点率 Touch Re
阅读全文
摘要:我们运行Windows应用,经常需要管理员权限去读写系统文件、外设设备。以管理员权限启动应用可以参考:C# 程序管理员权限启动 - 唐宋元明清2188 - 博客园 (cnblogs.com) 进入程序后,我们判断当前是否管理员以规避一些其它入口的场景 使用 WindowsIdentity 和 Win
阅读全文
摘要:本文为大家介绍下.NET解压/压缩zip文件。虽然解压缩不是啥核心技术,但压缩性能以及进度处理还是需要关注下,针对使用较多的zip开源组件验证,给大家提供个技术选型参考 之前在《.NET WebSocket高并发通信阻塞问题 - 唐宋元明清2188 - 博客园 (cnblogs.com)》讲过,团队
阅读全文
摘要:项目上遇到使用WebSocket超时问题,具体情况是这样的,OTA升级过程中,解压zip文件会有解压进度事件,将解压进度通过进程通信传给另一进程,通信提示超时异常 小伙伴堂园发现大文件使用Zip解压,解压进度事件间隔竟然是1ms,简直超大频率啊 但是,解压事件超频也不应该通信异常啊,于是我通过1ms
阅读全文
摘要:本文主要介绍摄像头(相机)如何采集数据,用于类似摄像头本地显示软件,以及流媒体数据传输场景如传屏、视讯会议等。 摄像头采集有多种方案,如AForge.NET、WPFMediaKit、OpenCvSharp、EmguCv、DirectShow.NET、MediaCaptre(UWP),网上一些文章以及
阅读全文
摘要:大屏Windows设置网卡开启热点后,经常收到反馈,手机端无法搜索到大屏热点、或者手机连接大屏热点失败 这类问题一般有以下几类情况: 1. 物理网卡IP与热点网卡IP相同 2. 热点网卡IP,非正常热点IP(192.168.137.X) 热点IP我们一般定为192.168.137.X,192.168
阅读全文
摘要:本文介绍Windows下声音数据的采集,用于本地录音、视讯会议、投屏等场景 声音录制有麦克风、扬声器以及混合录制三类方式,麦克风和扬声器单独录制的场景更多点,混合录制更多的是用于本地录音 我们基于NAudio实现,开源组件NAudio已经很稳定的实现了各类播放、录制、转码等功能,WaveIn,Wav
阅读全文