刷新
探索Avalonia:C#跨平台UI框架的力量

博主头像 随着跨平台应用的需求不断增长,开发人员需要一种能够在不同操作系统上运行的用户界面(UI)框架。 Avalonia 是一种引人注目的选择。在本文中,我们将深入了解 Avalonia 是什么,它与 WPF 的区别,以及它的 UI 绘制引擎和原理、优点,以及一个简单的示例代码。 Avalonia 是什么? ...

iNeuOS工业互联网操作系统,“低代码”表单开发应用过程(一)

博主头像 iNeuOS工业互联网操作系统“表单设计”功能经过升级后,能够适用于更多应用场景,从业务上来讲可以扩展设备管理、MES等表单类的管理功能,从技术上来讲可以支持数据库单表应用、多级关联表应用、可以自定义写SQL语句等,现在支持22个基础表单组件、9个高级表单组件。 ...

.NET Emit 入门教程:第六部分:IL 指令:3:详解 ILGenerator 指令方法:参数加载指令

博主头像 本篇教程深入探讨了 ILGenerator 中的参数加载指令,通过详细解释Ldarg、Ldarga、Ldloc和Ldloca等指令的使用,读者能够清晰地认识到Ld指令用于加载参数或本地变量到堆栈,而St指令用于将值从堆栈存储到参数或本地变量中。这些指令为动态方法的生成提供了基础,帮助开发者更好地掌握... ...

Csharp线程

博主头像 CSharpe线程 目录CSharpe线程C#如何操作线程Thread1. Thread如何开启一个线程呢?2. Thread中常见的API3. thread的扩展封装threadpool一、 .NET Framework2.0时代:出现了一个线程池ThreadPool二、线程池如何申请一个线程呢? ...

学习Source Generators之从swagger中生成类

博主头像 前面学习了一些Source Generators的基础只是,接下来就来实践一下,用这个来生成我们所需要的代码。 本文将通过读取swagger.json的内容,解析并生成对应的请求响应类的代码。 创建项目 首先还是先创建两个项目,一个控制台程序,一个类库。 添加swagger文件 在控制台程序中添加F ...

WPF实现树形表格控件(TreeListView)

博主头像 前言 本文将探讨如何利用WPF框架实现树形表格控件,该控件不仅能够有效地展示复杂的层级数据,还能够提供丰富的个性化定制选项。我们将介绍如何使用WPF提供的控件、模板、布局、数据绑定等技术来构建这样一个树形表格。 一、运行效果 1.1默认样式 1.2 自定义样式 二、代码实现 2.1 创建自定义控件( ...

ET8.1(一)简介

博主头像 此系列文章逐个内容讲解ET8.1的新特性。 ET8.1 发布,带来以下新特性: 1. 多线程多进程架构,架构更加灵活强大,多线程设计详细内容请看多线程设计课程 2. 抽象出纤程(Fiber)的概念,类似erlang的进程,非常轻松的创建多个纤程,利用多核,仍然是单线程开发的体验 3. 纤程调度: 主 ...

学习Source Generators之IncrementalValueProvider

博主头像 前面我们使用了IIncrementalGenerator来生成代码,接下来我们来详细了解下IIncrementalGenerator的核心部分IncrementalValueProvider。 介绍 IncrementalValueProvider是基于管道的模式,将我们需要的数据进行处理转换后传递 ...

WPF中封装一个自己的MessageBox

博主头像 前言 在WPF应用程序开发中,我们可以借助其强大灵活的设计能力打造出绚丽而富有创意的用户界面。然而,与这种高度定制化的界面相比,标准MessageBox却显得有些原始和古老。它的外观与现代、绚丽的应用界面格格不入,使得用户在交互中可能感到突兀或不符合预期。 本文将深入探讨如何在WPF中封装自定义Me ...

socket 接收数据时粘包处理 c# winform

博主头像 socket在接收数据时,经常会因为网络延迟、缓存区数据处理不及时等原因造成收到的数据是多个包黏在一起的情况。如下图所示 图中红色框部分是通讯的 心跳包 图中黄色框部分和未框选部分是 两包 数据包 所以可见此时缓存区里面同时存在了一个心跳包,两个数据包 如何分包(此处仅针对几个完整的数据包在一起的情 ...

WPF如何封装一个可扩展的Window

博主头像 前言 WPF中Window相信大家都很熟悉,有时我们有一些自定义需求默认Window是无法满足的,比如在标题栏上放一些自己东西,这个时候我们就需要写一个自己的Window,实现起来也很简单,只要给Window设置一个WindowChrome.WindowChrome附加属性就可以实现,WindowC ...

一个可以让你有更多时间摸鱼的WPF控件(二)

博主头像 前言 上文介绍了如何通过一个Form自定义控件来简化数据的录入,并自动实现数据校验,自动布局排列等功能。本文继续介绍如何优化表格控件的使用,缩减代码量,实现工作效率的提升。 一、功能实现 上文中分析了DataGrid跟ListView两种表格控件的优劣,在这里我们选择ListView来实现我们的表格 ...

NET Core使用Grpc通信(一):一元请求

博主头像 gRPC是一个现代的开源高性能远程过程调用(RPC)框架,它可以高效地连接数据中心内和跨数据中心的服务,支持负载平衡、跟踪、运行状况检查和身份验证。 gRPC通过使用 Protocol Buffers 作为数据传输格式,实现了在不同平台上的通信,并支持双向流和流式传输。RPC 是远程过程调用的缩写, ...

gRPC入门学习之旅(四)

gRPC是一个高性能、通用的开源远程过程调用(RPC)框架,基于底层HTTP/2协议标准和协议层Protobuf序列化协议开发,支持众多的开发语言,由Google开源。 gRPC 客户端和服务端可以在多种环境中运行和交互。你可以用Java创建一个 gRPC 服务端,用 Go、Python、C# 来创... ...

.NET分布式Orleans - 8 - 贪吃蛇项目实战(准备阶段)

博主头像 到目前为止,Orleans7的核心概念基本已经学完,我准备使用Orleans7做一个项目实战,来总结自己的学习效果。 项目效果 通过Orleans7来完成一个贪吃蛇游戏,要求如下: 可以多人在线玩 贪吃蛇可以上/下/左/右改方向 贪吃蛇吃完食物,身体长度+1 项目暂定架构 初步设想,此游戏包括一个O ...

.NET分布式Orleans - 7 - Streaming

博主头像 概念 在Orleans中,Streaming是一组API和功能集,它提供了一种构建、发布和消费数据流的方式。 这些流可以是任何类型的数据,从简单的消息到复杂的事件或数据记录。Streaming API允许你定义、发布和消费这些流,而无需关心底层的传输机制或数据存储。 每个流都有一个唯一的标识符,称为 ...

<1···567···50>