.NET周刊【6月第3期 2025-06-15】

4 阅读16分钟

文章

C# 锁机制全景与高效实践:从 Monitor 到 .NET 9 全新 Lock

www.cnblogs.com/code-daily/…

本文介绍了线程安全及锁的基本概念,强调了共享资源在多线程编程中的重要性。线程安全确保多个线程对同一资源的访问不会导致数据损坏。竞态条件体现了缺乏适当同步机制的风险。锁作为同步工具,确保共享资源的互斥访问,阻止多个线程同时使用它。Monitor作为C#中的锁机制,提供了对临界区的访问控制。System.Threading.Lock引入了更高效的互斥锁机制,简化了锁的管理,降低了死锁的风险。通过有效使用锁,开发者可以提升程序的并发性能和稳定性。

C#-Visual Studio工具使用实践

www.cnblogs.com/anding/p/18…

本文介绍了Visual Studio的基础配置与常用快捷键,包括复制粘贴、全局搜索、多光标等操作,帮助用户提升编程效率。建议安装企业版以获取更多功能。文章还提到编程字体的选择,推荐JetBrains Mono、Fira Code等可提升编码体验的字体。此外,作者建议更改视觉主题,更适合长时间编程。通过使用内置的代码片段功能,开发者可以快速输入常用代码,提高开发效率。该文章实用性强,适合C#开发者。整体内容清晰,信息详尽。

[原创]《C#高级GDI+实战:从零开发一个流程图》第02章:画一个矩形,能拖动!

www.cnblogs.com/lesliexin/p…

本文从画可拖动矩形的基本功能入手,详细介绍了实现过程。首先展示了预期效果,包括单一矩形、多矩形以及不同颜色矩形的应用。接着,简要说明了实现原理,提供了编码步骤,如设计器设置、矩形绘制及鼠标事件处理。文中涉及GDI+技术,通过具体代码示例,逐步指导读者完成矩形的拖动功能。整体内容逻辑清晰,易于跟随,适合初学者了解流程图开发的基础知识。

自动 GitHub 20 种语言翻译工具 - OpenAiTx 开源免费

www.cnblogs.com/ITWeiHan/p/…

此文章介绍了一个基于.NET8开发的自动GitHub语言翻译工具OpenAiTx。用户只需简单更换网址即可进行AI翻译。该项目永久免费,开放源代码,旨在为GitHub上所有项目提供多语言翻译支持。用户能够通过复制badges在自己的GitHub Readme中显示翻译状态。文章详细描述了使用步骤,并提供了演示视频链接。每台主机每天可处理多个项目,具有良好的实用性和及时性。

WineHQ 发布的 Framework Mono 6.14 的这个特性对Windows Forms 用户来说肯定很感兴趣

www.cnblogs.com/shanyou/p/1…

微软于2024年8月将Mono项目正式捐赠给WineHQ,标志项目进入开源社区主导的新阶段。2025年3月,WineHQ发布了版本Framework Mono 6.14,主要优化了X11平台下的Windows Forms,提高了跨平台应用的稳定性与性能。该版本在图形渲染效率、响应性与资源管理以及特定问题修复方面进行了重大改进。图形渲染效率提升了复杂表单的帧率稳定性;响应性增强了UI线程的流畅度;解决了.NET应用退出时的卡顿问题。开发者建议升级至wine-mono 7.0.0及以上版本以享受完整的优化效果。

提升Avalonia UI质感,跨平台图标库选型实践

www.cnblogs.com/deali/p/189…

本文讨论了StarBlog工具的图标更新,使用FontAwesome替代Emoji,以提高跨设备的一致性。文中详细介绍了Avalonia生态中的两个图标库Icon.Avalonia和IconPacks.Avalonia,提供了使用FontAwesome的说明,包括安装、注册、布局文件添加、使用方式及自定义图标大小和动画效果。作者分享了具体代码示例,展示如何将图标独立使用、附加到控件以及作为图像源使用,增强了开发者的实用性与便捷性。

C# WinForms 实现打印监听组件

www.cnblogs.com/shenchuanch…

这篇文章介绍了一款用于Windows桌面的打印监听组件。它适用于企业级应用,支持多打印机任务的实时监控。文章详细介绍了主界面和托盘集成,使用WinForms界面,方便用户管理打印机。组件自动检测并管理本地打印机,提供设置默认打印机和查看属性的功能。文中还展示了相关代码段,展示如何绑定打印机列表和设置默认打印机。整体功能清晰且实用,适合企业需求。

一个开源免费、功能丰富的 WPF 自定义控件资源库

www.cnblogs.com/Can-daydayu…

本文介绍了一个开源的WPF自定义控件资源库WPF-ControlBase,功能丰富且免费(MIT许可证)。WPF是构建具有丰富用户界面的Windows桌面应用程序的强大框架,具备灵活布局、数据绑定和动画效果。文章提供了多个解决方案的源代码,包括演示项目和NuGet包的引用。同时,作者鼓励用户访问GitHub获取更多信息,并支持项目。该资源库已被列入优秀的C#/.NET/.NET Core项目推荐中,以帮助开发者获取最新的动态和最佳实践。

MinHook 如何对.NET底层的 Win32函数 进行拦截

www.cnblogs.com/huangxinche…

本文介绍了如何使用MinHook库来拦截.NET SDK之外的Win32函数。作者首先提到.NET外挂Harmony的局限性,然后推荐了MinHook作为解决方案,并提供了项目链接。文章包含一个简单的案例,演示如何利用PInvoke来拦截MessageBox函数。代码片段清晰易懂,有助于读者快速上手。MinHook的使用方法包括初始化、安装和卸载钩子,整体结构合理,逻辑紧密,满足技术读者的需求。

C# 中委托和事件的深度剖析与应用场景

www.cnblogs.com/powertoolst…

本文探讨了C#编程中的委托和事件的基本概念及应用。委托是一种类型安全的函数指针,用于实现回调机制。文章详细介绍了委托的定义、实例化及调用,并提供了多个示例代码。多播委托可以引用多个方法,支持依次调用和管理这些方法。这些内容对于提高C#代码的效率和可维护性非常重要。

GGTalk 开源即时通讯系统源码剖析之:远程磁盘 (低调赠送GGTalk最新源码)

www.cnblogs.com/justnow/p/1…

本文探讨了GGTalk开源即时通讯系统中新增的远程磁盘功能及其源码实现。首先,定义了消息协议以支持远程磁盘的功能。在交互媒体类型中添加了远程磁盘(RemoteDisk),并结合以前的交互类型定义了请求、应答等通信模式。接着,介绍了如何在GGTalk客户端项目中请求访问对方磁盘,包括检查用户状态和发送媒体通信请求。最后,提供了代码示例来展示具体实现。这篇文章明确、实用,适合开发者参考。

[原创]《C#高级GDI+实战:从零开发一个流程图》第01章:有什么用、有什么效果?

www.cnblogs.com/lesliexin/p…

本文探讨GDI+在现代应用中的作用,主要集中在Winform中的自定义控件开发。文章展示了使用GDI+实现复杂程序的全方位技巧,特别是性能优化。尽管GDI+使用较少,但其原理可应用于其他绘图技术,如canvas和skia。文章还介绍了制作高效流畅的流程图和其他二维图形操作的可能性。最终提供了基于LCanvas开发的教程,旨在促进技术交流与学习。

不写一行代码 .NET 使用 FluentCMS 快速构建现代化内容管理系统(CMS)

www.cnblogs.com/Can-daydayu…

FluentCMS是基于ASP.NET Core与Blazor构建的现代化开源内容管理系统。它满足了现代CMS对灵活性、可扩展性和用户友好的需求,支持无头CMS功能,适合多种数字应用场景。系统具备快速运行、可扩展、响应式设计和多语言支持等特点,提供媒体管理和SEO优化工具。支持多种数据库配置,包括LiteDb、MongoDB、SQLite等,用户可通过简单设置快速定制自己的CMS。项目源代码可在GitHub和Gitee找到,倡导开源社区参与和贡献。

C#/.NET/.NET Core技术前沿周刊 | 第 41 期(2025年6.1-6.8)

www.cnblogs.com/Can-daydayu…

这篇文章介绍了C#/.NET/.NET Core技术的最新动态和实践,包括面试宝典、简化C#运行方式、优秀项目推荐以及日志缓冲功能等内容。面对快速发展的技术,文章强调模式匹配的核心特性及其对代码可读性的提升,同时也涵盖了在树莓派上应用.NET开发WiFi配网功能的实用案例,推动技术的实际应用与学习。

一个基于 .NET 8 + Ant Design Blazor 开发的简洁现代后台管理框架

www.cnblogs.com/Can-daydayu…

Caviar 是一个基于 .NET 8 和 Ant Design Blazor 开发的现代后台管理框架,支持多语言和多种设备。它具有自动代码生成、字段权限和数据权限等功能,代码实现100%隔离。此外,框架兼容多种数据库,内置多个管理模块。其开源项目在 GitHub 和 Gitee 上提供,方便用户查看和使用,鼓励社区参与贡献。该框架简单易用,提高开发效率,并已被收录进优秀项目推荐中。

C#实现欧姆龙 HostLink 通讯协议库

www.cnblogs.com/dragonet-Z/…

该文章详细介绍了C#实现欧姆龙HostLink通讯协议的过程,涵盖了协议背景、PLC内存区域、数据类型以及RS232接线等基础知识。文章描述了如何通过C-Mode和FINS-Mode两种模式实现PC与PLC的数据读写,提供了高效的通讯方式和方法。文章展示了C#核心实现,包括FCS校验码生成和串口通讯,还附带了控制台测试项目,验证了通讯库的功能。内容清晰明了,技术深度较高,具有较好的实用性和时效性。整体结构合理,具有一定的原创性并引用了相关资料。

C# 与低代码平台的融合:以活字格为例的 Web API 开发实践

www.cnblogs.com/powertoolst…

本文探讨了低代码平台与 C# 的结合,重点介绍了如何在葡萄城公司的活字格平台上使用 C# 创建服务端 Web API。文章详细讲解了 C# Web API 的基本概念、优势以及创建过程,包括环境准备和项目设置。它强调了模块化设计、RESTful 架构的支持、跨平台性以及安全性等特点。同时提供了具体的代码示例,展示了如何接收标准化的 JSON 数据。这些内容对开发者在实际应用中具有较高的指导价值。

微软 AI Agent三剑客:AutoGen、Semantic Kernel与MEAI的协同演进

www.cnblogs.com/sheng-jie/p…

微软构建了一个分层AI开发平台,包含AutoGen、Semantic Kernel(SK)和Microsoft.Extensions.AI(MEAI)。MEAI在.NET生态中提供基础AI抽象,简化与AI服务的整合。SK作为AI应用的核心编排框架,支持生产环境的智能应用,整合AutoGen的研究成果。AutoGen则用于多智能体协作的前沿研究,提供灵活的原型设计环境。三者通过成熟功能迁移和能力整合成为统一的AI工具,助力.NET开发者构建智能应用。

Maui 实践:为控件动态扩展 DragDrop 能力

www.cnblogs.com/zhally/p/18…

本文探讨了拖放功能的实现,强调了DragGestureRecognizer和DropGestureRecognizer的配合及其复杂性。作者创建了一个扩展方法,简化了拖放配置,并通过核心构件如DragDropPayload和DragDropMessage实现了控件与业务逻辑的解耦。这些设计使得用户可专注于业务逻辑而非技术细节。核心组件提供类型安全,数据透传和业务解耦等功能,提高了代码的可读性和可维护性。整体架构合理且实用,内容适合C# .NET开发者了解更深层次的拖放机制。

Select 组件实现【全选】(基于 Element)

www.cnblogs.com/hnzhengfy/p…

本文介绍了在 Element 的 Select 组件中实现全选功能的方法。由于 Select 组件默认不支持全选属性,作者提供了添加 Checkbox 的解决方案。当所有选项被选中时,Checkbox 自动勾选,取消选择时则自动取消勾选。通过监测选中项的数量与备选列表长度,动态更新 Checkbox 状态。示例中包含前端实现代码和 JavaScript 逻辑,清晰展示了如何管理多选操作。此实现增强了用户体验。

开源提示词优化神器来了!一键优化Function Calling和MCP提示词,让你的AI应用性能飞跃

www.cnblogs.com/token-ai/p/…

该文章介绍了一个开源的提示词优化平台Auto-Prompt,旨在解决Function Calling和MCP提示词调用不准确的问题。文中首先说明了为何需要专业的提示词优化,并列举了一些常见的场景。接着,文章详细阐述了平台的核心功能,包括智能识别API参数、优化上下文理解及错误处理逻辑等。同时,文章解析了Function Calling的优化原理及其多项优势,并指出MCP提示词的标准化需求。最后,提供了在线体验和本地部署的指导,强调了开源和社区驱动的特点。

理解堆排序的本质:建堆 + 交换 + 装箱+重复

www.cnblogs.com/morec/p/189…

堆排序是一种基于堆结构的选择排序,适用于不允许额外空间的场景,性能为 O(n log n)。其核心步骤包括构建最大堆,将堆顶元素与堆尾元素交换,去掉已排序元素,然后重复调整堆,直到只剩一个元素为止。文章提供了 C# 和 Go 的实现代码,详细注释其实现过程,便于读者理解。示例通过步骤演示了从初始数组到排序完成的过程,展示了数据的变化。

WinForm中实现Adobe PDF Reader实现旋转PDF功能

www.cnblogs.com/wofeiliangr…

本文探讨了在Adobe PDF Reader中实现PDF旋转的方法。由于Adobe PDF Reader缺乏直接的旋转功能,作者建议通过引入PdfiumViewer库来旋转PDF并保存文件。具体方法包括创建临时文件,使用内存流操作加载PDF文档,并对每一页进行旋转。该方法有效解决了文件锁定问题,提供了实用的代码示例,便于开发者理解和运用。

VKProxy已提供命令行工具,镜像和简单的ui

www.cnblogs.com/fs7744/p/18…

VKProxy是使用C#开发的基于Kestrel的L4/L7代理。经过六个月的开发,它已具备基本功能。文档中包括安装和使用指南,支持通过UI配置和JSON文件配置。提供dotnet工具命令行支持,当前兼容net9.0。使用者可通过命令vkproxy -h获取参数信息,并能自定义JSON格式的配置文件,配置路由、负载均衡和健康检查等。此项目适合对代理技术感兴趣的开发者。

一个基于 .NET 开源、模块化 AI 图像生成 Web 用户界面

www.cnblogs.com/Can-daydayu…

SwarmUI是基于.NET的开源模块化AI图像生成Web用户界面,旨在提供易用和高性能的工具。该项目支持各种AI图像及视频模型,兼容Windows、Linux和Mac。用户需现代GPU以保证性能。项目源代码与安装指导可在GitHub上找到,鼓励用户关注和支持开源项目。SwarmUI已被收录为C#/.NET领域的优秀项目,以帮助开发者获取最新动态和最佳实践。

AppBox拖拽设计增删改查用户界面

www.cnblogs.com/BaiCai/p/18…

本文介绍了大屏设计中用户界面的动态生成方法,包括准备数据结构、详情视图和列表视图的布局与操作步骤。作者提供了创建数据状态、绑定表单及按钮事件的方法,并提到待实现的权限验证和动态化组件。同时表达了对Bug的容忍与对协作的欢迎。这篇文章为开发者提供了具体的操作指导,是一个实用的技术分享。

.net 实现 CQRS 的一个设想

www.cnblogs.com/xiangji/p/1…

本文讨论了使用CQRS和DDD框架在项目开发中遇到的问题,包括数据库负载和数据不一致。提到使用开源框架和ShadowSql简化数据同步,通过MQ将事件包装以支持其他系统的数据需求。该方法可能会提高数据一致性。作者提出了改进方案,借助IExecuteSql接口来同步数据库,认为可以解决大部分数据不一致的问题。最后,尽管ShadowSql尚不支持ES和Hive,但该设想具有潜力。

本周国际周刊未更新

C# .NET 交流群

相信大家在开发中经常会遇到一些性能问题,苦于没有有效的工具去发现性能瓶颈,或者是发现瓶颈以后不知道该如何优化。之前一直有读者朋友询问有没有技术交流群,但是由于各种原因一直都没创建,现在很高兴的在这里宣布,我创建了一个专门交流.NET性能优化经验的群组,主题包括但不限于:

  • 如何找到.NET性能瓶颈,如使用APM、dotnet tools等工具
  • .NET框架底层原理的实现,如垃圾回收器、JIT等等
  • 如何编写高性能的.NET代码,哪些地方存在性能陷阱

希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET问题和宝贵的分析优化经验。目前一群已满,现在开放二群。可以加我vx,我拉你进群: ls1075 另外也创建了QQ Group: 687779078,欢迎大家加入。

本文由博客一文多发平台 OpenWrite 发布!