<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[专注C# WPF客户端开发，Windows桌面开发]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/PWJvie</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; PWJvie]]></copyright><item><title><![CDATA[C#在二合一平板电脑关于旋转模式相关设置]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/156695803</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/156695803</guid><author>PWJvie</author><pubDate>Wed, 07 Jan 2026 20:49:24 +0800</pubDate><description><![CDATA[二合一平板电脑会根据方向调整而旋转，下面是介绍旋转方向的一些设置。设置应用进程不跟随旋转设置系统旋转开关，实时生效监听旋转变化。]]></description><category></category></item><item><title><![CDATA[WPF 性能优化方法总结]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/156366569</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/156366569</guid><author>PWJvie</author><pubDate>Sun, 28 Dec 2025 21:31:53 +0800</pubDate><description><![CDATA[WPF 性能瓶颈主要集中在布局计算、数据绑定、UI渲染、资源管理、线程调度 等环节。WPF 的布局系统通过 Measure（测量）和 Arrange（排列）计算元素位置，嵌套层级越深、容器越复杂，性能开销越大。3. 避免频繁 Dispatcher.Invoke（合并更新），建议使用 Dispatcher.InvokeAsync。WPF 主线程(STA线程)负责 UI 渲染，耗时操作（如数据查询、文件读写）必须放在后台线程，避免界面卡顿。// 保存新 STA 线程的 Dispatcher（用于跨线程调度）]]></description><category></category></item><item><title><![CDATA[C#实现隐藏磁盘的方法，我的磁盘你访问不了！]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/156225250</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/156225250</guid><author>PWJvie</author><pubDate>Fri, 26 Dec 2025 15:24:44 +0800</pubDate><description><![CDATA[diskpart微软介绍强大的磁盘操作工具：https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/diskpart。代码仓库可以在我的gitee方法：https://gitee.com/panwangvie/PwjBlogExamples。下面介绍的是对磁盘分配/删除盘符 的方法以及设置盘符在文件管理器中不显示的方法。就像是何晨光的电脑，拿到了也读不了我的文件！]]></description><category></category></item><item><title><![CDATA[C#对Bios进行读写，读写GPIO,CMOS，WinIo使用和避坑]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/156265081</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/156265081</guid><author>PWJvie</author><pubDate>Thu, 25 Dec 2025 11:18:09 +0800</pubDate><description><![CDATA[winIo可以被多个进程加载，但是某个进程InitializeWinIo之后不释放的话，其他其他进程用使用的时候调用ShutdownWinIo之后就无法InitializeWinIo，使用的时候可以使用进程锁进行锁住，用完需要尽快释放。WinIo的.sys文件需要签名才可以使用，不签名的话需要进入测试模式可以调试使用，进入测试模式命令cmd bcdedit.exe /set TESTSIGNING ON。使用WinIo的应用被以为Kill掉的话.sys无法释放会删除不了，因此用完要立即释放资源。]]></description><category></category></item><item><title><![CDATA[移动热点问题记录]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/146009916</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/146009916</guid><author>PWJvie</author><pubDate>Tue, 23 Dec 2025 11:35:43 +0800</pubDate><description><![CDATA[【代码】移动热点问题记录。]]></description><category></category></item><item><title><![CDATA[异步编程，相关锁的介绍---Mutex进程锁]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/156086539</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/156086539</guid><author>PWJvie</author><pubDate>Mon, 22 Dec 2025 15:10:46 +0800</pubDate><description><![CDATA[微软文档： https://learn.microsoft.com/zh-cn/dotnet/api/system.threading.mutex.-ctor?.Net5之前或者.net Framework的Mutex构造函数直接可以传入MutexSecurity ,用于解决「管理员进程创建的 Mutex，普通进程无法访问」的问题，避免 UnauthorizedAccessException。使用场景：进程内独占硬件设备访问, 进程内独占文件访问, 进程内独占数据库连接,进程独占某个系统IO资源。]]></description><category></category></item><item><title><![CDATA[Windows Service服务启用普通权限的WPF应用]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/156151247</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/156151247</guid><author>PWJvie</author><pubDate>Mon, 22 Dec 2025 15:08:10 +0800</pubDate><description><![CDATA[在Windows系统中，服务通常运行在System权限下，而用户应用程序需要运行在普通用户权限下。当我们需要从服务中启动一个具有UI界面的用户应用程序时，就需要使用特殊的权限提升技术。本文将详细介绍这一过程的关键流程和技术要点。之前写的其他开机自启动的方法：https://blog.youkuaiyun.com/PWJvie/article/details/144785724?]]></description><category></category></item><item><title><![CDATA[异步编程--死锁的四个必要条件详解]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/156135747</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/156135747</guid><author>PWJvie</author><pubDate>Sun, 21 Dec 2025 22:29:15 +0800</pubDate><description><![CDATA[在 C# / .NET 里，死锁的“四个必要条件”其实很好理解，把它们看成导致“互相卡住”的四块拼图——四块都存在时，才会真的卡死。在 Method1 中，线程先 lock (_lockA)，在持有 A 的同时又 lock (_lockB)，典型的“占有且等待”。如果一个资源可以被多个线程同时使用（比如只读资源、纯函数），线程之间就不会因为“抢资源”而卡住，也就不会形成死锁。理论上，如果系统能“看你占着厕所不干事，就强制踢你出来”，就能打破死锁；不可抢占意思是：线程持有的资源不能被强制剥夺，只能主动释放。]]></description><category></category></item><item><title><![CDATA[异步编程---异步取消机制CancellationToken]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/156083918</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/156083918</guid><author>PWJvie</author><pubDate>Fri, 19 Dec 2025 15:13:59 +0800</pubDate><description><![CDATA[本质上，CancellationToken 只是一个信号——一个轻量级对象，用于告知异步代码：“该停止了。如果你仍以“没有取消令牌也能运行”为由跳过它们，那你写的就不是健壮的异步代码——你写的是为所欲为的代码。你创建源对象，从中获取令牌，并将令牌传递给任何需要支持取消的方法。几乎所有规范的 .NET API 都接受可选 CancellationToken 参数，这意味着你的方法也应该如此。理解取消机制不仅是编写防御性代码，更是编写专业代码：尊重用户时间、节约系统资源、在压力下保持可预测行为。]]></description><category></category></item><item><title><![CDATA[异步编程，相关锁的介绍，SemaphoreSlim 信号量]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/156083819</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/156083819</guid><author>PWJvie</author><pubDate>Fri, 19 Dec 2025 15:11:10 +0800</pubDate><description><![CDATA[SemaphoreSlim：本质是计数信号量，仅管理 “可用计数”，不校验 Wait/Release 是否在同一线程（Release 只做计数 + 1，不管是谁调用。]]></description><category></category></item><item><title><![CDATA[C# WPF播放APNG动画，支持半透明]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/155578901</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/155578901</guid><author>PWJvie</author><pubDate>Thu, 04 Dec 2025 20:50:41 +0800</pubDate><description><![CDATA[界面代码]]></description><category></category></item><item><title><![CDATA[C#实现Windows粘贴板，复制多种格式图片]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/155564813</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/155564813</guid><author>PWJvie</author><pubDate>Thu, 04 Dec 2025 11:42:22 +0800</pubDate><description><![CDATA[DataFormats.Dib	    设备无关位图        	Office 系列（Word/Excel）DataFormats.Html	HTML 格式（包含图片路径）	富文本编辑器、网页编辑器。DataFormats.Bitmap	 标准位图格式	    系统画图、WPF 应用。PNG 原始数据	        无损图片格式       	浏览器、设计工具。DataFormats.FileDrop	文件路径列表	资源管理器、文件编辑器。]]></description><category></category></item><item><title><![CDATA[使用原始输入RegisterRawInputDevices 监听设备输入的方法，监听键鼠、笔、触摸、触摸板的事件]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/155035518</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/155035518</guid><author>PWJvie</author><pubDate>Wed, 19 Nov 2025 19:00:25 +0800</pubDate><description><![CDATA[官方关于注册原始输入的文档。]]></description><category></category></item><item><title><![CDATA[多种 Windows 下设置开机自启程序的方法及示例]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/144785724</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/144785724</guid><author>PWJvie</author><pubDate>Sat, 28 Dec 2024 17:45:00 +0800</pubDate><description><![CDATA[在 Microsoft.Win32.TaskScheduler.TaskFolder.RegisterTaskDefinition(String path, TaskDefinition definition, TaskCreation createType, String userId, String password, TaskLogonType logonType, String sddl)也可以在添加账户或者移除账户的时候触发任务。是一个非常灵活的开机启动方式。可以设置多种运行时机。]]></description><category></category></item><item><title><![CDATA[如何使用飞书自定义机器人通知消息]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/144785100</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/144785100</guid><author>PWJvie</author><pubDate>Sat, 28 Dec 2024 11:06:54 +0800</pubDate><description><![CDATA[大家有没有这样的需求，就是正在执行某个任务的时候希望任务完成之后给个通知，或者是软件运行报错的时候每天定期收集错误日志。平时我们工作用的飞书，所有现在用飞书机器人把消息通知出来,非常简单 好用 的消息通知。拿到Image_key之后就可以，通过自定义机器人的Webhook地址发送图片。C#实现如下，这个webhook真实可用，大家可以拿了玩玩，消息会发到我这里。拿到Token之后调用上传图片的方法，拿到图片的image_key。// 替换为你自己的飞书机器人Webhook地址。]]></description><category></category></item><item><title><![CDATA[Windows安全中心误杀，排查项]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/132768983</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/132768983</guid><author>PWJvie</author><pubDate>Fri, 08 Sep 2023 23:20:06 +0800</pubDate><description><![CDATA[有些exe和dll会在下载的时候就被windows个杀掉，实际已经签名了还是会被杀掉。如何解决，如下在windows安全中心把你文件的目录添加到排查项即可。]]></description><category></category></item><item><title><![CDATA[关于网卡频段设置（设置国家码）]]></title><link>https://blog.youkuaiyun.com/PWJvie/article/details/132768799</link><guid>https://blog.youkuaiyun.com/PWJvie/article/details/132768799</guid><author>PWJvie</author><pubDate>Fri, 08 Sep 2023 23:00:20 +0800</pubDate><description><![CDATA[目前英特尔的网卡是支持根据链接的AP的国家码自动切换频段的，而其他USB的网卡如Realtek网卡是不支持切换频段的，需要通过驱动厂商提供的工具和方法设置指定国家码。起因：由于不同国家对应wifi和热点的频率可能会做现在，所有我们wif和ap设备出口到国外需要遵守别国的电波法。比如日本的频段5G频段限制在140频段以下。]]></description><category></category></item></channel></rss>