刷新
用友U8Api 接口对接

博主头像 U8 API接口集成主要用于第三方系统与用友U8ERP系统进行数据交互,实现业务系统对接 文档中接口集成了用友U8各个版本的数据对接功能,支持U8.9到 U818.0版本要求,摒弃了eai、openapi、api、暴力插库等接口的方式,全部采用co进行集成,通过几十个大大小小项目的对接、迭代验证,展 ...

BindingList的应用与改进

博主头像 在编写UI的过程中,我们通常使用ObservableCollection来监听列表的变化。然而,ObservableCollection只能在添加/移动/移除元素时通知界面,这意味着元素内部更改时,ObservableCollection是无法通知的 如果需要监听列表元素内部的更改,可以使用Syst ...

使用 CsWin32 和 ComWrappers 实现 COM 接口

博主头像 基础概念 CsWin32 是微软开发的一个 C# 的源生成器,可以按需生成 C# PInvoke 代码,也支持生成系统的 COM 接口定义。 ComWrappers 是 dotnet 5 引入的新的和 COM api 互操作的组件。 生成支持 AOT 的 COM 接口 使用 CsWin32 生成 C ...

[原创]《C#高级GDI+实战:从零开发一个流程图》第10章:鼠标拖动完成连线、拖动时实时显示半透明虚线连线效果、自定义连接点样式

博主头像 一、前言 上节课程我们实现了连接形状不同的连接点,但在实际使用中会发现很繁琐,需要分别指定开始形状和结束形状的连接点,这明显不符合操作经验逻辑。我们本节课程就来实现鼠标拖动完成连线,拖到哪个连接点就对哪个连接点完成连线,所见即所得,而且在拖动连线过程中,还会实时显示虚线箭头用于提示。 相信看完的你, ...

使用Inno Setup打包安装程序exe流程

博主头像 使用Inno Setup制作WPF开发的桌面应用程序流程 1.项目框架布局 项目目录:D:\Project\XenD101H\Tools,这个目录我将下载innosetup-6.2.2.exe 安装的程序放置这里,以及有几个脚本执行文件,最后输出RadarSensorConfigTool.exe,放 ...

Runtime Async - 步入高性能异步时代

博主头像 同步代码和异步代码 一般而言,代码可分为同步与异步两类。两者同样需要等待操作完成:同步会阻塞当前线程,直至操作结束后再继续执行后续逻辑;异步则不阻塞当前线程,而是在发起操作时预先注册完成后的处理逻辑,待操作完成时由操作本身或外部机制触发该逻辑。 于是这就带来一个问题,那就是同步代码和异步代码的写法是 ...

记一次 .NET 某跨境物流系统 内存暴涨分析

博主头像 一:背景 1. 讲故事 分享了几篇崩溃,这一篇跟大家分享一例内存暴涨,训练营里有位学员朋友找到我,说他们的软件存在内存暴涨,让我帮忙看下怎么回事,dump也抓到了。 二:内存暴涨分析 1. 内存真的暴涨吗 一直都给训练营里的学员灌输一个思想,就是不要相信任何人说的话,而应该是以数据说话,由于是 li ...

记一次 .NET 某中医药附属医院门诊系统 崩溃分析

博主头像 一:背景 1. 讲故事 前段时间有位训练营的学员找到我,说他们的软件在客户那边崩溃了,没找到是什么原因,比较着急,让我帮忙看下是怎么回事?毕竟我的学员是永久的免费dump分析,必须给他上一卦。 二:崩溃分析 1. 为什么会崩溃 关于怎么分析崩溃dump,这个在训练营里面早已整出来了套路,先用 !an ...

聊一聊 .NET 中的 CompositeChangeToken

博主头像 一:背景 1. 讲故事 上一篇跟大家聊到了 CancellationTokenSource,今天跟大家聊到的是另一个话题叫组合变更令牌 CompositeChangeToken,当前我所有的研究都是基于dump分析之用,所以偏重的点自然就不一样,如果纯纯的研究源码那可能就是入门到放弃。。。接下来说下 ...

聊一聊 .NET 的 AssemblyLoadContext 可插拔程序集

博主头像 一:背景 1. 讲故事 最近在分析一个崩溃dump时,发现祸首和AssemblyLoadContext有关,说实话这东西我也比较陌生,后来查了下大模型,它主要奔着替代 .NetFrameWork 时代的 AppDomain 的,都是用来做晚期加卸载,实现对宿主程序的可插拔,AppDomain.Cre ...

如何使用PocoEmit.Mapper替代AutoMapper

PocoEmit使用比较简单对于大部分转化是不需要手动配置 可以替代AutoMapper的大部分工作,实现精简代码,提高性能 一、获取Mapper实例 1. 获取Mapper默认实例 Default是一个静态延迟初始化的默认实例 IMapper mapper = PocoEmit.Mapper.De ...

记一次 .NET 某放射治疗光学定位软件 卡死分析

博主头像 一:背景 1. 讲故事 前段时间微信上有位非调试训练营学员找到我,说他们的医疗软件有点问题,有时候卡了一会就好了,有时候卡了很久,让我帮忙看下怎么回事,我让这位朋友在卡的时候抓一个dump给我,我分析看看。 二:卡死分析 1. 为什么会卡死 对于窗体程序的卡死,主要就是看主线程此时正在做什么,使用 ...

婶可忍叔不可忍的AutoMapper,你还用吗?

AutoMapper是让人又爱又恨的项目 爱它是因为它解决了一些问题,很多项目都有用,下载量很大,受众很广。 恨它是因为它诸多反人类的设计。 为此本人开源项目PocoEmit对标AutoMapper。 1. AutoMapper反人类设计 1.1 AutoMapper注册代码 services.Ad ...

记一次 .NET 某企业审批系统 崩溃分析

博主头像 一:背景 1. 讲故事 今年年初有位朋友在微信上找到我,说他们的系统在客户这边崩掉了,在代码中也加了全局异常处理但还是崩,不知道咋回事,让朋友在客户那边拿程序dump,拿到dump之后开始分析。 二:崩溃分析 1. 为什么会崩溃 既然是崩溃,那就用 !analyze -v 命令观察下windbg给我 ...

用代码写代码:使用Roslyn API构建语法树并应用于源生成器

博主头像 在上文构建源生成器的过程中,我们使用字符串直接插入代码。这样做固然方便快捷,但字符串需要手动格式化,且无法检测拼写错误,这对需要生成复杂结构的源生成器项目很不友好。 本文将介绍生成代码的另一种方式:使用Roslyn API构建语法树。 什么是语法树 (Syntax Tree)? 语法树是编译器用于理 ...

<123···14>