后端
未读
【CSharp】通过SemaphoreSlim类限制资源访问线程数
概念 在 C# 中,SemaphoreSlim 是 System.Threading 命名空间下的轻量级同步原语,用于限制同时访问共享资源的线程数量。 核心特性 轻量高效 专为高性能设计,适用于进程内同步,比 Semaphore 类更高效。 异步支持 提供 WaitAsync() 方法,支持异步编程
后端
未读
【CSharp】抽象类和接口详解
抽象类(Abstract Class) 概念 不能实例化:抽象类不能被实例化,它通常作为基类存在,为子类提供一套通用的接口和部分实现。 包含实现:抽象类可以包含具体的方法实现和抽象方法。抽象方法必须在子类中被重写。 单继承:一个类只能继承自一个抽象类(C#中不支持多重继承)。 应用场景 当你希望提供
后端
未读
【WPF】单双屏显示切换控制
前言 近期我完成了一个项目,该项目需求是在连接了双显示器的设备上,对屏幕显示设置的更改进行监听。具体而言,当显示设置调整为 “复制这些显示器” 时,程序要自动隐藏;而当显示设置变为 “扩展这些显示器” 时,程序则需显示在非主显示器的第二显示器上。接下来,我会对此次项目中的业务逻辑进行简单记录,希望能
后端
未读
【WPF】解决在WPF中使用MediaElement控件播放视频卡顿问题
问题 在近期项目中,我使用了 WPF 原生的 MediaElement 媒体控件来播放视频。然而,当我的笔记本连接外接显示屏时,程序中 MediaElement 控件播放视频会出现短暂卡顿,尤其是在每次实例化该控件并自动播放视频时。而当我断开外接显示屏后,MediaElement 控件则能正常播放视
Docker
未读
【Docker】搭建一个功能强大的自托管虚拟浏览器 - n.eko
前言 本教程基于群晖的NAS设备DS423+的docker功能进行搭建,DSM版本为 DSM 7.2.2-72806 Update 2。 n.eko 支持多种类型浏览器在其虚拟环境中运行,本次教程使用 Chromium 浏览器镜像进行演示,支持访问内网设备和公网地址。 简介 n.eko 是一款基于
后端
未读
【CSharp】使用SpeechSynthesizer类将文本转换为语音
简介 SpeechSynthesizer 是 .NET Framework 和 .NET Core/5+ 中用于文本到语音(Text-to-Speech, TTS)转换的类。它属于 System.Speech.Synthesis 命名空间,主要用于将文本转换为语音并播放或保存为音频文件。 Speec
后端
未读
【CSharp】NLog日志记录库的简介及简单使用
简介 NLog 是一个灵活且高性能的日志记录库,专为 .NET 平台设计。它允许开发者在应用程序中轻松地记录日志,并将日志输出到多种目标(如文件、数据库、控制台、邮件等)。NLog 以其配置简单、扩展性强和高性能著称,是 .NET 开发中最流行的日志记录库之一。 特点 高性能:NLog 经过优化,能
后端
未读
【CSharp】INI文件的简介及读写操作
简介 INI文件是一种常见的配置文件格式,通常用于存储应用程序的配置信息。它的名称来源于“Initialization”(初始化),因为这种文件通常用于在程序启动时加载初始配置。INI文件以文本形式存储,结构简单、易于阅读和编辑,因此在早期的Windows应用程序中广泛使用。 INI文件的基本结构
后端
未读
【CSharp】使用Fleck库实现WebSocket服务
前言 最近公司有个项目需要用C/S架构的桌面应用程序与B/S架构的网页程序进行通信做数据的交互功能。在网上查了一下资料,发现 Fleck 实现一个WebSocket服务竟然如此简单明了,于是在此记录和整理了一下 Fleck 实现WebSocket服务的简单应用,希望对你有所帮助。 简介 Fleck
后端
未读
【CSharp】lock(this)与lock(private object)区别
前言 在使用多线程编程时,我们会对代码关键部分确保其一次只由一个线程执行,对于防止争用条件和保持数据完整性至关重要。在C#中,lock 语句就是用于通过同步对共享资源的访问来实现此目的工具。本文介绍lock(this) 与lock(private object) 两种方法及区别。 简介 lock(t
实用教程
未读
解决Windows 11 24H2中使用NetSetMan无法访问WiFi管理
前言 在Windows 11 24H2版本中NetSetMan中无法查看WiFi,显示 WLAN 已断开,且自动切换无法正常工作。 解决 在 Windows 11 24H2 中,Microsoft 添加了一项新限制,将对 WiFi API 的访问隐藏在位置隐私设置后面。如果您禁用了桌面应用程序的位置