<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Maybe_ch的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/Maybe_ch</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Maybe_ch]]></copyright><item><title><![CDATA[WPF的STA线程模型、APM与TAP：从线程约束到现代异步]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/159682462</link><guid>https://blog.csdn.net/Maybe_ch/article/details/159682462</guid><author>Maybe_ch</author><pubDate>Tue, 31 Mar 2026 11:38:32 +0800</pubDate><description><![CDATA[文章摘要： WPF开发中的线程模型演进经历了三个阶段：1) STA线程模型强制UI单线程访问，通过Dispatcher调度；2) APM模型采用Begin/End异步模式，需手动Dispatcher切换线程，导致回调地狱；3) TAP模型基于Task和async/await，自动通过同步上下文回归UI线程，代码简洁如同步。三者形成清晰的演进路线：从基础规则（STA）→传统方案（APM）→现代实践（TAP）。在WPF中，TAP模型完美适配STA要求，使异步UI更新既安全又优雅，成为当前首选方案。理解这一演进过]]></description><category></category></item><item><title><![CDATA[深度解析 WPF 线程模型：告别 UI 卡死，掌握 Dispatcher 核心机制]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/159658135</link><guid>https://blog.csdn.net/Maybe_ch/article/details/159658135</guid><author>Maybe_ch</author><pubDate>Tue, 31 Mar 2026 00:02:06 +0800</pubDate><description><![CDATA[WPF线程模型与Dispatcher机制解析：本文深入探讨WPF开发中的线程管理机制。核心内容包括：1) WPF基于STA单线程模型，确保UI元素线程安全；2) 应用启动时自动创建UI线程和渲染线程；3) Dispatcher作为UI线程调度中心，通过优先级队列管理任务执行；4) 提供Invoke/InvokeAsync等跨线程通信方案；5) 提出保持UI响应的三大准则。文章强调理解Dispatcher机制对开发高性能WPF应用的重要性，特别是合理使用异步调度避免界面卡顿。掌握这些核心概念能有效解决常见的跨]]></description><category></category></item><item><title><![CDATA[.NET代码格式化工具推荐！！！]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/155005509</link><guid>https://blog.csdn.net/Maybe_ch/article/details/155005509</guid><author>Maybe_ch</author><pubDate>Wed, 19 Nov 2025 00:38:55 +0800</pubDate><description><![CDATA[文章摘要：本文介绍了代码格式化的重要性，包括提升可读性和保证团队一致性。重点推荐了XAML和CS文件的格式化工具：XAML Styler和CSharpier，展示了它们在Visual Studio和Rider中的使用效果，并验证了跨平台格式化结果的一致性。文章最后提供了两个相关生产力工具的往期推荐链接。（149字）]]></description><category></category></item><item><title><![CDATA[生产力工具推荐-Microsoft PowerToys]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/150265444</link><guid>https://blog.csdn.net/Maybe_ch/article/details/150265444</guid><author>Maybe_ch</author><pubDate>Tue, 12 Aug 2025 13:02:50 +0800</pubDate><description><![CDATA[用于自定义 Windows 的实用工具，Microsoft PowerToys是微软官方推出的免费开源工具集，专为Windows 10/11设计，旨在通过20+个实用工具弥补系统原生功能的不足，被用户誉为“Windows瑞士军刀”。无论是开发者、设计师还是办公党，它都能显著提升操作效率。]]></description><category></category></item><item><title><![CDATA[NSubstitute单元测试Mock框架，开启你单元测试的学习！]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/150252234</link><guid>https://blog.csdn.net/Maybe_ch/article/details/150252234</guid><author>Maybe_ch</author><pubDate>Tue, 12 Aug 2025 02:12:23 +0800</pubDate><description><![CDATA[本文介绍了使用NSubstitute和FluentAssertions进行单元测试的方法。以TestService和IApiService为例，展示了如何创建Mock对象、设置参数匹配器（包括任意值和限定值）、配置返回值、模拟异常抛出，以及验证方法调用次数。通过具体代码示例演示了单元测试的实现过程，包括测试用例的编写和断言验证。文章还提及了更深入的Mock功能可通过官方文档学习，并推荐了相关技术文章。这些技术要点为.NET开发中的单元测试提供了实用指导。]]></description><category></category></item><item><title><![CDATA[WPF-开源Icon库IconPacks.Browser 推荐来啦！！你值得拥有]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/149949792</link><guid>https://blog.csdn.net/Maybe_ch/article/details/149949792</guid><author>Maybe_ch</author><pubDate>Tue, 05 Aug 2025 23:50:35 +0800</pubDate><description><![CDATA[摘要： 推荐开源图标库IconPacks.Browser，解决WPF项目中图标管理混乱、重复添加的问题。该工具整合了多个主流图标库（如Material Design、Font Awesome），提供可视化预览、按需搜索和属性调整功能，支持一键生成XAML代码。通过NuGet安装MahApps.Metro.IconPacks主包或子包即可快速集成，显著提升开发效率。内置的图标浏览器还能实时调整颜色和尺寸，生成可直接使用的代码片段，是优化WPF项目图标管理的理想解决方案。]]></description><category></category></item><item><title><![CDATA[一文掌握 C# Lazy：延迟加载利器]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/149917421</link><guid>https://blog.csdn.net/Maybe_ch/article/details/149917421</guid><author>Maybe_ch</author><pubDate>Mon, 04 Aug 2025 23:59:28 +0800</pubDate><description><![CDATA[在日常开发中，你是否遇到过这些问题？● 程序启动缓慢，因为初始化了大量可能用不到的资源？● 某个大对象创建耗时，拖累了整个模块的响应速度？● 想写线程安全的单例，却被双重检查锁搞得头晕眼花？Lazy 正是 C# 为解决这类问题而生的优雅方案！它通过 “延迟初始化”** 的核心机制，将对象的创建推迟到第一次真正被访问的时刻，从而显著提升程序效率与资源利用率。今天，我们就来深入探讨下这个性能优化的利器。]]></description><category></category></item><item><title><![CDATA[WPF-CommunityToolkit.Mvvm框架简化你的代码]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/149914832</link><guid>https://blog.csdn.net/Maybe_ch/article/details/149914832</guid><author>Maybe_ch</author><pubDate>Mon, 04 Aug 2025 21:47:48 +0800</pubDate><description><![CDATA[本文介绍了MVVM框架的核心功能与实现方式。该框架具备跨平台特性（支持.NET Standard 2.0/2.1和.NET 6）、模块化设计和现代化高性能特点，通过源码生成器自动生成属性通知和命令代码。重点解析了ObservableProperty和RelayCommand特性对代码的简化效果，以及ObservableObject和ObservableRecipient基类的使用场景。文章还涉及消息机制（注册、发送、注销）的实战应用，并推荐结合.NET官方IOC容器使用。最后提供了相关技术文章的扩展阅读链接]]></description><category></category></item><item><title><![CDATA[掌握Autofac：IOC容器实战指南]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/149586336</link><guid>https://blog.csdn.net/Maybe_ch/article/details/149586336</guid><author>Maybe_ch</author><pubDate>Wed, 23 Jul 2025 23:59:44 +0800</pubDate><description><![CDATA[Autofa也是一款很流行的IOC容器：那如何使用？第三方的IOC容器；1.Nuget引入程序包● Autofac2.创建一个ContainerBuilder3.注册抽象和实现关系4.Build一下，得到IContainer容器5.通过容器获取服务实例6.获取服务。]]></description><category></category></item><item><title><![CDATA[.NET-键控服务依赖注入]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/149585723</link><guid>https://blog.csdn.net/Maybe_ch/article/details/149585723</guid><author>Maybe_ch</author><pubDate>Wed, 23 Jul 2025 23:42:38 +0800</pubDate><description><![CDATA[.NET 8键控服务依赖注入简介 当同一接口需要多个实现时，.NET 8引入的键控服务依赖注入(Keyed DI)提供了解决方案。通过为不同实现分配唯一键值(如&quot;Fun1&quot;、&quot;Fun2&quot;)，可使用AddKeyedSingleton注册服务，并通过[FromKeyedServices]特性或IServiceProvider.GetRequiredKeyedService()按键解析。建议使用nameof或枚举替代硬编码字符串作为键值，提高代码可维护性。该特性弥补了.NE]]></description><category></category></item><item><title><![CDATA[WPF-引用不同位置的文件URL写法，你都了解吗？]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/149550981</link><guid>https://blog.csdn.net/Maybe_ch/article/details/149550981</guid><author>Maybe_ch</author><pubDate>Tue, 22 Jul 2025 23:58:46 +0800</pubDate><description><![CDATA[摘要： 本文详细介绍了WPF中四种资源文件的pack URI格式：1)本地程序集资源文件使用application:///授权和相对路径；2)引用程序集资源文件需包含程序集短名、版本、公钥等信息；3)内容文件URI基于应用程序可执行文件位置；4)源站点文件使用siteoforigin:///授权。每种类型都提供了典型示例，包括根目录和子目录下的文件路径写法。特别指出引用程序集URI仅支持application授权，不支持siteoforigin授权。]]></description><category></category></item><item><title><![CDATA[WPF-好用的WPF UI组件库推荐来啦！]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/149550204</link><guid>https://blog.csdn.net/Maybe_ch/article/details/149550204</guid><author>Maybe_ch</author><pubDate>Tue, 22 Jul 2025 23:18:26 +0800</pubDate><description><![CDATA[摘要： 推荐WPF组件库HandyControl，支持.NET 5.0-8.0及Framework 4.0-4.8.1，UI美观且易用。集成步骤：1）通过NuGet安装；2）在App.xaml中添加资源引用；3）引入命名空间即可使用。提供丰富组件（如图片展示的控件效果），官方文档详见GitHub主页及文档网站。适合需要快速构建现代化WPF应用的开发者。]]></description><category></category></item><item><title><![CDATA[WinForm-免费，可商用的WinForm UI框架推荐]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/149517431</link><guid>https://blog.csdn.net/Maybe_ch/article/details/149517431</guid><author>Maybe_ch</author><pubDate>Mon, 21 Jul 2025 22:28:53 +0800</pubDate><description><![CDATA[AntdUI是一款基于Ant Design设计语言的WinForm UI组件库，将现代前端风格引入桌面应用开发。采用纯GDI绘图，无需图片资源，支持AOT编译，兼容.NET Framework 4.0及以上版本和.NET 6.0/9.0。该开源库提供美观易用的控件，适用于商业项目开发，效果展示包括多种UI组件，整体设计风格简洁现代。项目地址：https://gitee.com/antdui/AntdUI。]]></description><category></category></item><item><title><![CDATA[.NET依赖注入IOC你了解吗？]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/149513017</link><guid>https://blog.csdn.net/Maybe_ch/article/details/149513017</guid><author>Maybe_ch</author><pubDate>Mon, 21 Jul 2025 19:12:44 +0800</pubDate><description><![CDATA[依赖注入是一种设计模式和软件设计原则，用于实现 控制反转。它的核心思想是：将对象所依赖的其他对象的创建和管理职责从对象内部转移到外部容器或框架，从而降低代码的耦合度，提高可测试性、可维护性和灵活性。]]></description><category></category></item><item><title><![CDATA[Blazor-内置输入组件]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/148856992</link><guid>https://blog.csdn.net/Maybe_ch/article/details/148856992</guid><author>Maybe_ch</author><pubDate>Mon, 23 Jun 2025 23:46:02 +0800</pubDate><description><![CDATA[本文介绍了几种常见的封装输入组件，包括：复选框(InputCheckbox)、日期选择框(InputDate)、文件上传(InputFile)、数字框(InputNumber)、单选按钮(InputRadio)、单选按钮组(InputRadioGroup)、下拉菜单(InputSelect)、单行文本框(InputText)以及多行文本框(InputTextArea)。这些组件为表单开发提供了标准化的解决方案，简化了不同类型输入字段的开发工作。]]></description><category></category></item><item><title><![CDATA[Blazor-EditContext]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/148856467</link><guid>https://blog.csdn.net/Maybe_ch/article/details/148856467</guid><author>Maybe_ch</author><pubDate>Mon, 23 Jun 2025 23:39:01 +0800</pubDate><description><![CDATA[Blazor中的EditContext是管理表单状态和验证的核心类，它跟踪表单字段修改状态并提供事件通知机制。通过绑定模型对象，可以初始化EditContext来监控表单字段变化。示例展示了EditContext的基本用法，包括获取字段定义、使用OnFieldChanged事件响应字段值变化，以及如何在提交事件中处理EditContext参数。关键功能包括：1) 绑定模型对象来跟踪表单状态；2) 使用Field方法获取字段信息；3) 通过OnFieldChanged事件捕获字段变更；4) 在提交事件中直接使]]></description><category></category></item><item><title><![CDATA[Blazor-预呈现你了解吗？]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/148531644</link><guid>https://blog.csdn.net/Maybe_ch/article/details/148531644</guid><author>Maybe_ch</author><pubDate>Mon, 09 Jun 2025 13:31:07 +0800</pubDate><description><![CDATA[Blazor预呈现技术通过在服务器端预先渲染页面提升WebAssembly应用的加载速度和SEO优化。它支持四种模式：None（静态）、Server（交互式SSR）、WebAssembly（交互式CSR）和Auto（Server+WebAssembly），其中后三种支持预呈现。开发人员可通过@rendermode参数控制预呈现行为，如禁用(prerender:false)或启用(prerender:true)该功能。预呈现实现了从静态HTML到交互式SPA的平滑过渡，同时允许组件在Server或WebAss]]></description><category></category></item><item><title><![CDATA[Blazor-Ant Design of Blazor快速开始]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/148530517</link><guid>https://blog.csdn.net/Maybe_ch/article/details/148530517</guid><author>Maybe_ch</author><pubDate>Mon, 09 Jun 2025 11:29:51 +0800</pubDate><description><![CDATA[Ant Design Blazor是一个基于Blazor的开源UI组件库，提供Ant Design风格的界面元素。它支持快速创建项目，通过dotnet模板即可生成完整的前端解决方案。安装时使用dotnet new --install AntDesign.Templates命令，创建项目时可选择是否包含全部Pro页面(-f参数)、指定托管模型(-ho)和样式类型(--styles)。示例展示了如何创建包含完整Pro页面的MyAntDesignApp项目，并成功运行web应用。该框架适合需要快速构建企业级Bla]]></description><category></category></item><item><title><![CDATA[Blazor-表单提交的艺术：如何优雅地实现 （下）]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/148472001</link><guid>https://blog.csdn.net/Maybe_ch/article/details/148472001</guid><author>Maybe_ch</author><pubDate>Fri, 06 Jun 2025 13:20:18 +0800</pubDate><description><![CDATA[本文对比了Blazor框架中&lt;EditForm&gt;组件与原生HTML &lt;form&gt;的使用差异。&lt;EditForm&gt;通过Model属性关联数据模型，支持双向数据绑定和内置验证机制，提供OnSubmit等事件处理，无需整页刷新，优化了SPA体验。而原生&lt;form&gt;需要手动处理数据绑定和验证，默认会整页刷新。文章还展示了交互式SSR和静态SSR两种模式下&lt;EditForm&gt;的具体实现方法，包括模型绑定、表单提交和参数配置。通过功能对比，说明了&lt;Edi]]></description><category></category></item><item><title><![CDATA[Blazor-表单提交的艺术：如何优雅地实现 （上）]]></title><link>https://blog.csdn.net/Maybe_ch/article/details/148465742</link><guid>https://blog.csdn.net/Maybe_ch/article/details/148465742</guid><author>Maybe_ch</author><pubDate>Fri, 06 Jun 2025 09:29:54 +0800</pubDate><description><![CDATA[本文介绍了Blazor中的三种表单提交方式：1) 传统HTML表单提交，使用标准HTML表单元素但会导致页面刷新；2) 交互式SSR提交，采用@bind双向绑定和@onsubmit事件处理，支持防伪令牌(AntiforgeryToken)防止CSRF攻击；3) 静态SSR提交，使用[SupplyParameterFromForm]属性绑定模型。三种方式各适用于不同场景，其中SSR方式能更好地与Blazor集成，避免页面刷新。代码示例展示了表单定义、字段绑定和提交处理的具体实现。]]></description><category></category></item></channel></rss>