lindexi

林德熙 - Windows 10 App Developer

林德熙

WPF 已知问题 在 WIC 层处理异常图片时 可能由于出现未处理异常导致进程退出

本文记录一个已知问题,此问题预计和 WPF 只有一毛钱关系,本质问题是在 WIC 层的 WindowsCodecs.dll 或 CLR 层上。在一些奇怪的系统上,解码一些奇怪的图片时,可能在解码器层抛出未捕获的本机异常,从而导致进程退出

博客导航

本文记录我写的博客和我收集的博客

升级到 dotnet core 之后 HandleProcessCorruptedStateExceptions 无法接住异常

这是 dotnet core 的破坏性改动之一,在 dotnet framework 里面,可以使用 HandleProcessCorruptedStateExceptionsAttribute 接住非托管层抛出的异常,如 C++ 异常等。但是这个功能在 dotnet core 下存在行为的变更,从 .NET Core 1.0 开始,损坏进程状态异常无法由托管代码进行处理。 公共语言运行时不会将损坏进程状态异常传递给托管代码

开源项目

这是我收藏的开源项目

WPF 基础 2D 图形学知识 判断点是否在线段上

在知道一个使用两个点表示的线段,和另一个点,求另一个点是否在线段上

WPF 开启Pointer消息存在的坑

本文记录在 WPF 开启 Pointer 消息的坑

WPF 冷知识 定义依赖属性的最大数量是 65534 个

远古的 WPF 框架开发的大佬们认为没有任何业务的开发者需要用到超过 65534 个依赖属性和附加属性,为了节省内存空间就限制了所有的依赖属性和附加属性的定义总和加起来不能大于等于 65535 个

Office 使用 OpenXML SDK 解析文档博客目录

本文收集 Office 解析相关博客

从 WPF 搬迁到 UOS 下的 UNO 的笔记

本文记录我将一个小 WPF 应用搬迁到 UNO 框架,用于支持统信 UOS 系统时开发经验

Notes on Migrating from WPF to UNO under UOS

This article documents my experience in migrating a small WPF application to the UNO framework for support on the UOS(统信).

dotnet 简单方法在一个进程内同时跑起 WPF 和 ASP.NET Core 框架

从设计架构上,无论是 WPF 还是 ASP.NET Core 框架,都是在 dotnet 运行时上层的应用,两个框架处于平级的结构。理论上讲,两个平级的框架只要不存在特殊的情况,都是能够相容存在的。本文将和大家介绍一个非常简单的方法,在一个进程内同时跑起 WPF 和 ASP.NET Core 框架

dotnet UNO 如何在调试下输出界面层级结构

本文将告诉大家如何在 UNO 里面将界面的层级结构输出到调试窗口

WPF 触摸相关

本文整理我写的触摸博客

WPF 什么时候 VisualTreeHelper.GetDescendantBounds 将返回无穷大

本文将和大家介绍在什么情况下 WPF 将会在调用 VisualTreeHelper.GetDescendantBounds 方法时,返回一个无穷大的范围尺寸

dotnet 8 破坏性改动 在 AssemblyInformationalVersionAttribute 添加上 git 的 commit 号

我在一个 WPF 项目里面,在界面显示应用的版本号,更新到 dotnet 8 的 SDK 之后,发现我的界面布局损坏了。本质上这个破坏性改动和 WPF 没有什么关系,是 dotnet 的 SDK 或编译器的破坏性变更,在 AssemblyInformationalVersionAttribute 的 InformationalVersion 属性里面写入了当前的 git 的 commit 提交号

WPF 通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸转换过来

本文将告诉大家如何在 WPF 或者其他 Win32 应用里面,在收到鼠标消息时,通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸消息提升而来

WPF 使用 ManipulationDemo 工具辅助调试设备触摸失效问题

本文将和大家介绍我所在的团队开源的 ManipulationDemo 工具。通过 ManipulationDemo 工具可以提升调试设备触摸失效的效率

WPF 如何确定应用程序开启了 Pointer 触摸消息的支持

因为 WPF 在开启 Pointer 和没有开启的基础表现是几乎相同的,因此从业务层很难了解到当前是否开启了 Pointer 消息。本文从开发者的角度,通过 Windows 消息判断当前是否开启 Pointer 支持

WPF 获得触摸精度和触摸点

本文主要告诉大家如何获得所有的触摸设备的触摸精度和触摸点数。

dotnet 已知问题 错误标记 MethodImplOptions.InternalCall 特性参数将会在类型访问之前抛出 TypeLoadException 异常

本文将记录一个 dotnet 的已知问题。当自己不小心在方法上不正确标记了 MethodImplAttribute 特性时,错误选择了 MethodImplOptions.InternalCall 参数,那将会在运行的过程在,在此类型被访问之前就抛出了 System.TypeLoadException 异常,错误信息是 Internal call method with non_NULL RVA 内容

dotnet 警惕 C# 的 is var 写法

本文将和大家介绍 C# 语言设计里面,我认为比较坑的一个语法。通过 is var 的写法,会让开发者误以为 null 是不被包含的,然而事实是在这里的 var 是被赋予含义的,将被允许 null 通过判断逻辑,于是就会让开发者收到了奇怪的空异常

解决 System.Net.Sockets.SocketException 10106 无法加载或初始化请求的服务提供程序 无法联网

本文收集 System.Net.Sockets.SocketException 异常错误码为 10106 导致无法联网的问题

解决 System.Net.Sockets.SocketException 10045 参考的对象类型不支持尝试的操作 无法联网

本文收集 System.Net.Sockets.SocketException 异常错误码为 10045 导致无法联网的问题

WPF 触摸下如何给 StylusPointCollection 添加点

本文告诉大家如何在触摸下给 WPF 的 StylusPointCollection 添加新的点

WPF 笔迹算法 从点集转笔迹轮廓

本文将告诉大家一些笔迹算法,从用户输入的点集,即鼠标轨迹点或触摸轨迹点等,转换为一个可在界面绘制显示笔迹画面的基础数学算法。尽管本文标记的是 WPF 的笔迹算法,然而实际上本文更侧重基础数学计算,理论上可以适用于任何能够支持几何绘制的 UI 框架上,包括 UWP 或 WinUI 或 UNO 或 MAUI 或 Eto 等框架

dotnet core 3.1 将 UWP 控件嵌入到 WPF 应用 收到 UIA 消息主线程卡住

本文记录一个问题,此问题是在 .NET Core 3.1 的 WPF 应用里面,嵌入 UWP 控件之后,在收到 UIA 的消息时,可能让主线程卡住。暂时此问题还不知道具体的复现步骤,此问题预计和 WPF 无关,不确定是否和 UWP 相关,此问题可能仅仅只是 UIA 模块的问题

IIncrementalGenerator 增量 Source Generator 生成代码应用 将构建时间写入源代码

本文将和大家介绍一个 IIncrementalGenerator 增量 Source Generator 生成代码技术的应用例子,将当前的构建时间写入到代码里面。这个功能可以比较方便实现某些功能的开关,比如说设置某个功能自动在具体应用发布之后过一段时间就失效等功能

dotnet 探究 SemanticKernel 的 planner 的原理

在使用 SemanticKernel 时,我着迷于 SemanticKernel 强大的 plan 能力,通过 plan 功能可以让 AI 自动调度拼装多个模块实现复杂的功能。我特别好奇 SemanticKernel 里的 planner 的原理,好奇底层具体是如何实现的。好在 SemanticKernel 是完全开源的,通过阅读源代码,我理解了 SemanticKernel 的工作机制,接下来我将和大家分享我所了解到的原理

dotnet SemanticKernel 入门 开篇

本文将开坑告诉大家什么是 SemanticKernel 以及如何使用框架

开源实战

本文记录我参与的开源项目

dotnet 使用 ToUpperInvariant 替换 ToUpper 以避免初始化 icu 过慢

在应用软件启动过程中,客户端应用软件是对性能敏感的。比如在解析命令行参数的时候,有时候需要进行字符串处理逻辑。一般来说命令行参数都是语言文化无关的,在需要进行全大写或全小写转换过程中,采用 ToUpperInvariant 替换 ToUpper 方法可以避免初始化 icu 模块,减少 icu 模块初始化过慢影响启动性能

WPF 已知问题 RadioButton 指定 GroupName 后关闭窗口可能导致无法选中

本文记录一个 WPF 已知问题,当 WPF 的 RadioButton 指定 GroupName 且将 IsChecked 状态绑定到 ViewModel 上,将包含以上控件的代码的窗口显示两个,接着关闭其中一个。此时可以看到依然开着的窗口的 RadioButton 控件无法正确在用户界面上点击选中

dotnet 使用增量源代码生成技术的 Telescope 库导出程序集类型

本文将告诉大家在 dotnet 里面使用免费完全开源的基于增量源代码生成技术的 Telescope 库,进行收集导出项目程序集里面指定类型。可以实现性能极高的指定类型收集,方便多模块对接入自己的业务框架

dotnet 打包 NuGet 的配置属性大全整理

本文整理 dotnet 打包 CBB 组件为 NuGet 包时可以使用的配置的各个属性