自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 WPF的一些基础知识学习记录

路由事件(Routed Event)是WPF事件系统的核心,它允许事件在元素树中传播,而不仅仅局限于引发事件的对象。

2025-07-23 23:02:51 63

原创 一些Avalonia与WPF内容的对应关系和不同用法

WPF与Avalonia对比

2025-07-22 23:02:07 211

原创 记录一个C#/.NET的HTTP工具类

摘要:本文展示了一个C#/.NET的HTTP工具类HttpClientHelper,封装了常用的HTTP请求方法。主要功能包括:1) HttpGet方法发送GET请求并返回泛型结果;2) HttpPost方法发送POST请求并返回泛型结果;3) HttpPostX和HttpGetX方法支持带Token的请求。类中使用了HttpClient进行网络请求,设置30秒超时,并利用Serilog记录日志。返回结果支持JSON反序列化,当请求失败时会返回默认值或HttpResult对象。代码已处理常见的网络异常情况。

2025-06-27 11:38:44 350

原创 BlockingCollection实现生产者消费者模式

说明:只有调用collection.CompleteAdding(),且collection为空时,consumerTask才可能终止;否则,因为collection.GetConsumingEnumerable()的无限迭代,consumerTask将无法终止。如果某线程确定需要持续后台运行,则可不调用collection.CompleteAdding()。如上代码,在生产者完成添加后,主动调用 CompleteAdding(),当消费者消费所有内容后,则会自动退出。

2025-06-04 10:43:14 855

原创 C#通过NTP服务器获取NTP时间

获取到的时间,如果需要自己进行时区转换,可以通过C#代码从电脑本机获取到标准的时区列表,然后将获取到的NTP时间加上时区的BaseUtcOffset,即可转换到所需要的时区时间。

2025-04-27 09:41:47 476

原创 ASP.NET Core学习——IHostService

IHostedService 的生命周期是与应用程序的生命周期相匹配的。它会在应用启动时启动,并在应用关闭时停止。它是一个持久的后台服务,与应用请求的生命周期无关。比如,在你的ASP.NET Core程序中,除原有的web api接口外,需要另外开启一个TCP Server,该服务在整个程序运行过程中都保持通讯,则可以使用。它通常用于实现后台任务、定时任务或任何需要在应用程序生命周期内运行的长期任务。例如,后台工作者线程、消息队列的监听、定时事件等。长时间运行的任务或异步作业。

2025-02-27 15:21:08 483

原创 记一次Ngnix配置

假设一个服务器中有一个公网IP、一个内网IP,另外已经部署好后台服务的接口地址为http://内网ip:8088。

2025-02-18 21:53:56 353

原创 Prism的Region、Module及其应用

在Prism中,可以使用XAML或代码创建定义Region<Grid></Grid></Window>

2025-02-18 21:22:07 916

原创 Prism注册和获取实例(IContainerRegistry和IContainerProvider)

通常是:每次请求都创建一个新的实例,但每个请求内只有一个实例,如在Web应用中,作用域通常指的是一个HTTP请求。服务的生命周期在特定的作用域内,每次进入新作用域时会创建一个新的实例,而同一作用域内的多个请求会共享该实例。:Prism框架中,用于注册和配置应用程序中的依赖注入(DI)容器的接口。在容器中注册一个单例服务,在整个应用程序生命周期内只创建一个实例,并且这个实例在所有需要它的地方共享。从容器中获取实例时,只在第一次获取实例时会创建一次,之后所有请求该服务的地方都返回同一个实例。

2025-02-10 22:51:08 1659

原创 bat脚本获取Windows的系统管理员权限并执行脚本

【代码】bat脚本获取Windows的系统管理员权限并执行脚本。

2024-03-25 17:22:08 1363

原创 【WPF学习笔记】WPF 中使用附加属性解决 PasswordBox 的数据绑定问题

在 WPF 开发中 View 中的数据展示我们常通过 Binding 进行绑定。绑定的目标只能是依赖属性。而 PasswordBox 控件中的 Password 并不是一个依赖属性,所以我们在使用 Password 时无法直接进行数据绑定。为了解决这个问题,我们就需要自己定义依赖属性。标题中的 “附加属性” 是依赖属性的一种特殊形式。

2023-03-30 22:58:47 2707

原创 三层架构、MVC、前后分离的一些知识

前端的UI层,只是知道DTO的存在,同时前端需要的数据都在一个DTO中,这样,每次调用服务层的时候,只需要调用一次就可以完成所有的业务逻辑操作,而不是原来的直接调用业务逻辑层那样的,需要调用多次,对于分布式场景下,减少服务调用的次数,尤其重要。MVC架构是一种开发模式,与三层架构不是一个类型的概念。在实际的业务场景下,后端实现或存储的数据远比用户需要的数据要庞大和复杂,所以前端需要的数据相对来说要么是组合的,要么是抽取的,不是完整的,因为在设计数据存储格式上都会有一些额外的设计和考虑,便产生了DTO层。

2023-03-30 22:43:29 3238

原创 面向对象的设计模式与原则

在面向对象的语言中,继承是必不可少的、非常优秀的语言机制。它存在非常明显优缺点。

2023-03-07 16:34:39 1017 1

原创 Prism学习:Region的使用

在我们的日常开发中,通常会将一个页面切割成不同的部分。如下一个页面,我们可以将其划分为头部、左侧目录、页面主体三个部分。在Prism中,我们可以将这三个部分理解为三个区域(Region),而区域之中可以再细分区域。Region负责承担UI控件,其中内容并不固定,可以动态分配。Prism中Region通过RegionManager进行管理。

2023-02-23 12:36:13 2387

原创 委托(C#入门详解学习笔记)

委托(delegate)可以理解为是C/C++中函数指针的”升级版“。委托是一种类(class),类是数据类型,所以委托也是一种数据类型。类可以声明变量、创建实例,所以委托也可以。委托的声明格式与C#中一般的类的声明格式不同,反而更像是C/C++中函数指针的声明格式。这样做主要是为了照顾可读性,并与C/C++传统保持一致。

2023-02-22 22:25:28 809

原创 【WPF学习笔记】WPF中使用ValidationRule自定义验证规则

WPF中使用ValidationRule自定义验证规则本文主要是展示在 WPF 中使用 ValidationRule 自定义验证规则,同时展示两种错误响应方式。一种是通过 Behavior 传递到 ViewModel 中,然后进行错误信息响应;一种是直接在 View 中遍历当前也的所有错误元素,在页面中通过事件统一响应。1、自定义验证规则类这里自定义两个验证规则类,分别用于验证 “用户名”输入不可为空、“邮箱”输入值需满足格式要求。两个类需要继承 ValidationRule 类。Validatio

2021-02-08 01:08:19 4154 2

原创 【WPF学习笔记】WPF中动画(Animation)的简单使用

WPF中动画(Animation)的简单使用动画(Animation)的部分简单属性的介绍使用动画需要使用以下两个类:Storyboard:创建动画需要使用故事板(Storyboard)元素,用于装载动画XXXAnimation:具体的动画类,实现具体的动画效果;具体的动画实现通过 XXXAnimation 中的属性实现,如下,以 DoubleAnimation 为例。不同参数类型的依赖属性需要对应使用不同的 动画类。From:动画的起始值To:动画的结束值。From 和 To 成对使用。B

2021-02-01 23:25:15 4807 1

原创 【WPF学习笔记】WPF中行为(Behavior)的简单使用

WPF中行为(Behavior)的简单使用在我之前的 WPF 开发中,需要实现一些页面效果时,常使用到的方式就是重写元素的样式(Style),然后再样式里面设置使用元素的各类触发器(Trigger)来实现效果。这样常常需要编写大量的代码。近日学习到 WPF 中有一个叫做 Behavior 的扩展方式,可以用来实现页面效果,实现方式更为简便。学习笔记如下:添加需要的DLL库要使用 Behavior 的相关功能需要先添加 “System.Windows.Interactivity” 库。可以通过 Nug

2021-02-01 20:40:55 1979

原创 EF Core 学习笔记

EF Core 学习笔记EF Core 学习笔记准备工作如何使用 EF Core 生成数据库设置字段属性实体间的对应关系1:n 关系m:n 关系1:1 关系数据库操作添加、查询单条数据添加批量数据库操作插入两个不同表的数据查询能完成查询的方法查询使用参数的区别模糊查询的两种方法生成 SQL 语句的顺序修改、删除删除数据修改数据更改未追踪数据添加关系型数据对比加载关联数据预加载显式加载懒加载多个多关联数据查询修改关联数据修改关联数据设置多对多关系删除多对多关系修改多对多关系设置一对一的关系执行原生的 SQL数

2020-12-30 00:03:37 1442

原创 WPFMediaKit的使用

WPFMediaKit的使用页面代码页面交互需要添加 WPFMediaKit 的Nuget 包页面代码CameraWindow.xaml<Window x:Class="WPF_WPFMediaKit.CameraWindow" x:Name="cameraWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.micros

2020-12-14 00:13:35 1259

原创 C#学习——LINQ

C#学习——LINQC#学习——LINQ查询表达式LINQ 理论LINQ 与 SQL 的区别与联系LINQ 分类LINQ 查询的四个要素LINQ 初级实例协变与逆变LINQ 综合实例学习资料来源于B站up主花千芳的视频:https://www.bilibili.com/video/BV1xJ411g7HmC#学习——LINQ查询表达式查询表达式必须以 from 字句开头,以 select 或 group 字句结束。第一个 from 子句和最后一个 select 子句或group 子句之间,可以包含一

2020-12-07 00:41:15 592

原创 ASP.NET Core 3.x 学习笔记(10)——部署

ASP.NET Core 3.x 学习笔记(10)——部署ASP.NET Core 3.x 学习笔记(10)——部署FDD,Framework-dependentSCD,Self-containedFDE,Framework-dependent executables发布流程ASP.NET Core 3.x 学习笔记(10)——部署.NET Core 部署类型(方式)FDD,Framework-dependentSCD,Self-containedFDE,Framework-dependent

2020-12-06 14:09:17 293 1

原创 ASP.NET Core 3.x 学习笔记(7)——Blazor

ASP.NET Core 3.x 学习笔记(7)——BlazorASP.NET Core 3.x 学习笔记(7)——Blazor编程模式对比Blazor客户端宿主模型Mono服务器端宿主模型从 Empty 模板开始建立一个 Blazor 项目本系列学习笔记均来源于B站UP主”软件工艺师“的学习视频,学习连接如下:https://www.bilibili.com/video/BV1c441167KQASP.NET Core 3.x 学习笔记(7)——Blazor编程模式对比MVCSPA(Sing

2020-12-06 00:35:14 935 1

原创 GitHub 搜索技巧

GitHub 搜索技巧in:name xxx 搜索项目名称包含“xxx”的项目in:readme xxx 搜索项目 README.md 文件中包含“xxx”的项目in:description xxx 搜索项目描述包含“xxx”的项目in:name xxx 搜索项目名称包含“xxx”的项目stars:>3000 搜索项目 stars 数 大于3000 的项目forks:>3000 搜索项目 stars 数 大于3000 的项目language:java 搜索语言为 JA

2020-12-04 07:12:05 360

原创 ASP.NET Core 3.x 学习笔记(6)——SignalR

ASP.NET Core 3.x 学习笔记(6)——SignalRASP.NET Core 3.x 学习笔记(6)——SignalR什么是实时 webSignalR “底层”技术Polling(轮询)Long PollingServer Sent Events(SSE)Web SocketWeb Socket 的生命周期HTTP 握手消息类型SignalR 概念学习SiganlR 回落机制RPCHub横向负载使用 SignalR具体通信逻辑,后续加强学习后分析本系列学习笔记均来源于B站UP主”软件工艺师“

2020-11-26 00:08:24 516 1

原创 ASP.NET Core 3.x 学习笔记(5)——Razor Page

本系列学习笔记均来源于B站UP主”软件工艺师“的学习视频,学习连接如下:https://www.bilibili.com/video/BV1c441167KQASP.NET Core 3.x 学习笔记(5)——Razor PageRazor PageMVC,实现如下三个分层:Model:数据View:HTML、Razor、TagHelpersControllers:逻辑Razor Page,将下列三个部分同意:数据Html、Razor、TagHelpers逻辑Razo

2020-11-23 21:27:18 721 1

原创 ASP.NET Core 3.x 学习笔记(4)——View Component

本系列学习笔记均来源于B站UP主”软件工艺师“的学习视频,学习连接如下:https://www.bilibili.com/video/BV1c441167KQASP.NET Core 3.x 学习笔记(4)——View Component紧接前面文章的内容,建立一个复用的控件,在项目的每个页面都显示公司的总人数和部门的平均人数。这时候就需要使用到 View Component。View Component为什么使用其它方式不可行?为什么 Partial View 不行?因为没法添加业务逻辑;

2020-11-23 07:26:05 281 1

原创 ASP.NET Core 3.x 学习笔记(3)——配置信息的使用

ASP.NET Core 3.x 学习笔记(3)——配置信息的使用ASP.NET Core 3.x 学习笔记(3)——配置信息的使用ASP.NET Core 的配置信息ASP.NET Core 的配置信息源使用配置信息实现字体加粗通过 appsettings.json 实现自定义配置信息源的 json 文件本系列学习笔记均来源于B站UP主”软件工艺师“的学习视频,学习连接如下:https://www.bilibili.com/video/BV1c441167KQASP.NET Core 3.x 学习笔

2020-11-22 12:18:50 396 1

原创 ASP.NET Core 3.x 学习笔记(2)——一个简单的 MVC 项目学习

ASP.NET Core 3.x 学习笔记(2)——一个简单的 MVC 项目学习ASP.NET Core 3.x 学习笔记(2)——一个简单的 MVC 项目学习MVC 相关技术ModelsServicesControllersViewsDepartmentEmployeeASP.NET Core 3.x 学习笔记(2)——一个简单的 MVC 项目学习本系列学习笔记均来源于B站UP主”软件工艺师“的学习视频,学习连接如下:https://www.bilibili.com/video/BV1c441167

2020-11-21 18:47:19 858 1

原创 ASP.NET Core 3.x 学习笔记(1)——从项目结构了解依赖注入、管道、路由

ASP.NET Core 3.x 学习笔记(一)——从项目结构了解依赖注入、管道、路由ASP.NET Core 3.0 学习笔记项目结构Program.csStartup.cs在 ASP.NET Core MVC 中简单实现项目启动环境变量静态文件包管理静态文件合并依赖注入 DI(Dependency Injection)DI 的优点ASP.NET Core 管道(pipeline)配置中间件路由ASP.NET Core 应用的多样性端点 endpointASP.NET Core 3.0 学习笔记项目结

2020-11-17 21:08:37 702 1

原创 WPF中资源字典(ResourceDictionary)的使用

WPF中资源字典(ResourceDictionary)的使用资源字典(ResourceDictionary)的使用1、建立资源文件2、项目中引入资源3、使用资源将资源全局注册资源字典(ResourceDictionary)的使用1、建立资源文件各资源文件中,若需要引入项目中其它文件,则可通过命名空间引入。对应各资源元素,设置x:key值。代码中通过x:key值获取相应的资源。以参数值转换器为例。ValueConverter.xaml<ResourceDictionary xmlns="ht

2020-11-16 11:33:16 15624 1

原创 C#异步编程案例学习——异步加载大资源文件 2 之 多线程加载

本文具体根据异步加载大资源文件案例中的多线程变成学习C# 中 BeginInvoke 与 EndInvoke 的一个简单的使用案例在使用 WPF 开发桌面软件过程中,遇到一个需要预加载大量文件的需求,具体需求如下:在软件启动后,需要加载大量的 CAD 资源文件,文件供软件中后续使用。文件加载过程中非常耗时,若同步加载则界面会出现假死的状态。在文件加载过程中,需要保证界面仍然可以进行其他操作,屏蔽跟资源文件有关的操作。文件加载完成后,开放跟资源文件有关的操作。解决方案:在软件启动后,软件页

2020-11-12 14:22:03 1106

原创 c#+handle.exe实现升级程序在运行时自动解除文件被占用的问题

参考文档:http://www.zuowenjun.cn/post/2016/09/05/243.html下载链接https://docs.microsoft.com/zh-cn/sysinternals/downloads/handle

2020-11-12 10:46:38 373

原创 C#异步编程案例学习——异步加载大资源文件1 之 使用 BeginInvoke 与 EndInvoke

在使用 WPF 开发桌面软件过程中,遇到一个需要预加载大量文件的需求,具体需求如下:在软件启动后,需要加载大量的 CAD 资源文件,文件供软件中后续使用。文件加载过程中非常耗时,若同步加载则界面会出现假死的状态。在文件加载过程中,需要保证界面仍然可以进行其他操作。解决方案:在软件启动后,软件页面正常完成加载后,后台继续进行异步加载资源文件,此时可操作正在加载的资源文件的按钮设置为不可操作。文件加载完成之后开发操作资源文件的按钮可操作。具体实现如下:1、WPF 页面 Window 中存在一个

2020-11-10 16:43:13 1157

原创 WPF中使用较少的事件(event)记录

WPF中使用较少的事件(event)记录Window.ContentRenderedWindow.ContentRenderedContentRendered 事件在窗口的内容呈现完毕之后发生。如果该窗口不包含任何内容,则不会引发此事件。具体使用如下代码,代码中将 Window_ContentRendered 绑定到 ContentRendered 事件上。<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/present

2020-11-10 11:13:30 754

原创 C#异步编程学习笔记5 之 异步模式

C#异步编程学习笔记5 之 异步模式异步模式取消(cancellation)CancellationToken 和 CancellationTokenSourceDelay 方法同步方法其它进度报告IProgress\ 和 Progress\基于异步 Task 的模式(TA P)Task 组合器WhenAnyWhenAllWhenAll 异常实例自定义 Task 组合器异步模式取消(cancellation)取消,指的是在等待一个异步操作完成的时候,对异步操作进行取消。使用取消标志来实现对并发进

2020-11-10 01:07:05 446

原创 C#异步编程学习笔记3 之 异步原理

C#异步编程学习3 之 异步原理异步原理同步 vs 异步什么是异步编程异步编程的两种用途一点建议异步编程和Continuation异步原理同步 vs 异步同步操作会在返回调用者之前完成它的工作异步操作会在返回调用者之后去做它的(大部分)工作异步的方法更为少见,会启用并发,因为它的工作会与调用者并行执行异步方法通常很快(立即)就会返回到调用者,所以叫非阻塞方法目前见到的大部分的异步方法都是通用目的的:Thread.StartTask.Run可以将 continuation 附加到 T

2020-11-09 07:32:37 833

原创 C#异步编程学习笔记2 之 Task

C#异步编程学习2 之 TaskTaskThread的问题Task Class开始一个Task(Task.Run)Wait 等待长时间运行的任务(Long-running tasks)Task 的返回值Task 的异常异常与“自治”的Task未观察到的异常Continuationawaiter如果发生故障非泛型task同步上下文ContinueWithTaskCompletionSource使用TaskCompletionSource的真正魔力Task.DelayTaskThread的问题线程(Thr

2020-11-09 07:29:56 1341

原创 C#异步编程学习笔记1 之 线程Thread

C#异步编程学习1 之 线程ThreadC#异步编程线程 Thread什么是线程Thread.Join() && Thread.Sleep()阻塞与解除阻塞阻塞 BlockingThreadState属性解除阻塞 Unblocking一些其它概念忙等待(自旋 Spinning)本地 VS 共享的状态(Local VS Shared State)线程安全 Thread Safety锁定与线程安全(简介)向线程传递数据Lambda表达式与被捕获的变量异常处理前台和后台线程(Foreground

2020-11-09 07:27:35 1268

原创 C#异步编程学习笔记4 之 异步函数

C#异步编程学习3 之 异步函数异步函数awaitingasync 修饰符异步方法如何执行可以 await 什么?捕获本地状态await 之后在哪个线程上执行UI 上的 await代码运行原理与粗粒度的并发相比编写异步函数(编写异步函数)富客户端场景下返回 Task\C# 中如何设计异步函数编译器能对异步函数生成 Task 意味着什么?异步调用图执行并行(Parallelism)异步 Lambda 表达式异步中的同步上下文发布异常OperationStarted 和 OperationCompleted优化

2020-11-08 22:56:54 401

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除