lindexi

林德熙 - 微软最具价值专家和 .NET 基金会成员

林德熙

WPF 已知问题 监听 WMI 事件导致触摸失效

本文记录 WPF 的已知问题,在 .NET Core 版本的 WPF 应用里面,应用启动的过程监听 WMI 事件,将导致触摸模块 COM 接口获取失败,进而导致触摸失效

SQLite 由于 mscoree.dll 损坏导致 BadImageFormatException 试图加载格式不正确的程序

本文记录 SQLite.Interop.dll 由于 mscoree.dll 文件损坏而在加载时抛出 BadImageFormatException 错误,错误信息是 0x8007000B 试图加载格式不正确的程序

WPF 触摸到事件

本文从代码底层告诉大家,在触摸屏幕之后是如何拿到触摸点并且转换为事件

dotnet 已知问题 警惕 StreamReader 的 EndOfStream 卡住线程

在 dotnet 里面,咱会经常使用 StreamReader 辅助类读取 Stream 的内容,比如按行读取等。如果在判断是否读取完成时,使用的是 StreamReader 的 EndOfStream 属性,则可能破坏原本的异步出让逻辑,导致线程被卡住

读 dotnet 源代码 为何 Thread.Sleep 半毫秒和一毫秒等待时间差距如此之大

本文记录我读 dotnet 的源代码了解到为什么调用 Thread.Sleep 的时候,传入的是不足一毫秒,如半毫秒时或 0.99 毫秒,与传入是一毫秒时,两者的等待时间差距非常大

dotnet 9 WPF 支持 Style 的 Setter 填充内容时可忽略 Value 标签

本文记录 WPF 在 dotnet 9 的一项 XAML 编写语法改进点,此改进点用于解决编写 Style 的 Setter 进行给 Value 赋值时,不能将 Value 当成默认内容,需要多写 Value 标签的问题。通过此改进点可减少两行 XAML 代码

WPF 开启Pointer消息存在的坑

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

WPF 记一个特别简单的点集滤波平滑方法

本文记录我想要解决自己从窗口接收 WM_Pointer 消息时,获取到的触摸点不平滑的问题而使用的特别简单且性能垃圾的点集滤波平滑方法

dotnet C# 如何在顶级语句定义属性

随着 dotnet 6 开始,现在的 C# dotnet 可以使用顶级语句非常方便创建一个小型项目,包含的代码也特别少。本文将和大家介绍如何在顶级语句里面定义属性

dotnet WinUI 3 修复非打包应用运行提示 Microsoft.ui.xaml.dll 找不到

本文记录一个 WinUI 3 的坑点,有时候开发者只是想拉下来代码跑一下,自己本机没有预先安装好 Windows App Runtime 导致缺失环境,进而在运行的时候提示 Unable to load DLL 找不到 Microsoft.ui.xaml.dll 启动失败

C# 从控制台创建 WinUI 3 应用

本文将告诉大家如何从控制台而不是 WinUI3 模版项目,从零一步步创建出 WinUI 3 应用

dotnet 默认创建的 JsonContent 没有 Content Length 的内容头

本文记录一个 dotnet 的设计问题,默认创建出来的 JsonContent 对象的 Headers 里,是没有 Content-Length 信息的

dotnet X11 多次调用 XPutImage 是否能做到渲染同步

本文将告诉大家我在麒麟系统和统信系统以及分别搭配飞腾和兆芯处理器的设备上,使用连续的 XPutImage 方法推送界面,测试是否能够在一次渲染内完成。测试结论是不能做到渲染同步

dotnet C# 结构体出方法弹栈之后的行为

本文记录我在 .NET 9 里测试的行为,在方法里面创建的在栈上的结构体,在方法执行结束之后,栈上的结构体将会被弹栈进入不受管理区域,此时的结构体内存内容不会立刻被清空或被改写

dotnet X11 栈空间被回收导致调用 XPutShmImage 闪退

本文记录在使用 X11 过程中的问题,由于不正确使用导致栈空间被回收,从而在调用 XPutShmImage 时让应用闪退,此问题本质上讲只和 X11 的设计有一分钱关系,更多的问题在于我的写法上

Avalonia 11.1 已知问题 IterationCount 为 Infinite 的动画播放出现异常

如果在 Avalonia 后台代码播放一个动画,这个动画的 Animation 的 IterationCount 被设置为 Infinite 那么将在播放的时候抛出 InvalidOperationException 异常

dotnet X11 简单使用 MIT-SHM 共享内存推送图片

这是我在尝试优化 Avalonia 在 Linux 上的低端设备的渲染性能时所研究的方式,本文将告诉大家如何简单使用 XShmPutImage 等 X11 的 XShm Extension 扩展方法,通过共享内存的方式推送图片

C# 高级面试题

很少会有人可以答对,如果你遇到一个来面试的人实在嚣张,就可以用本文的题去打击 本文内容就看着玩,请不要在严肃的面试中问题这样的题目

Avalonia 后台代码简单播放动画示例

本文将演示如何在 Avalonia 的后台代码里面创建 Animation 执行播放

Roslyn 通过 Nuget 引用源代码 在 VS 智能提示正常但是无法编译

本文告诉大家如果在 Nuget 引用源代码的方式引用源代码,在 VisualStudio 的智能提示和 Resharper 的智能提示都能找到对应的类,但是在 VisualStudio 编译或使用命令行 msbuild 编译时提示找不到类

程序员笑话

本文收集我在各个网站看到的程序员笑话。

dotnet X11 窗口 Destroy 之后是否可以再次 Map 显示

经过我的测试,在 X11 里面,如果先使用 XDestroyWindow 销毁窗口,将不能再次使用 XMapWindow 显示窗口

dotnet C# 分享基础 for 循环的写法

本文来和大家聊聊在 dotnet C# 里面的基础的 for 循环语法的写法

简单在 WinUI 仿造 WPF 的 ColumnDefinition SharedSizeGroup 共享列宽功能

本文将告诉大家如何在 WinUI 3 或 UNO 里面,仿造 WPF 的 ColumnDefinition SharedSizeGroup 共享列宽功能

dotnet C# 使用 SHFileOperation 调用 Win32 的文件复制对话框

本文将和大家介绍如何在 dotnet C# 里面使用 SHFileOperation 调用 Windows 自带的文件复制对话框进行文件复制

Avalonia 11.1 已知问题 应用启动时 PointToScreen 无法获取正确坐标

本文记录 Avalonia 11.1 版本的已知问题,在 Linux 上使用 X11 时,在应用启动时,即使在 Loaded 或 Activated 事件里,都无法使用 PointToScreen 获取到正确的屏幕坐标,只会将传入的点作为返回值

Avalonia 11.1 获取平台调用的窗口的方法

本文和大家介绍如何在 11.1 版本的 Avalonia 里获取平台调用的窗口的方法,如 Windows 获取窗口句柄,在 Linux 下获取 X11 的 xid 窗口信息

dotnet 解决 Avalonia 在 OpenKylin 麒麟系统运行找不到默认字体启动失败

本文记录 Avalonia 应用在 OpenKylin 麒麟系统运行找不到默认字体启动失败的解决方法

记联软 UniAccess 导致 NSIS 安装包启动进程失效

本文记录联软 UniAccess 注入的 C:\Window\LVUAAgentInstBaseRoot\syswow64\MozartBreathCore.dll 导致 NSIS 安装包启动进程失效,启动进程直接结束问题。且给出 NSIS 安装包脚本的规避方法

记 Win8.1 某应用渲染抛出 OutOfMemoryException 异常及修复方法

本文记录某个应用在某台 Windows 8.1 x86 系统上,运行时抛出 OutOfMemoryException 异常,启动失败。应用程序能启动,但是在第一次碰到渲染时,就发现渲染初始化失败,从而让应用程序闪退

记将一个大型客户端应用项目迁移到 dotnet 6 的经验和决策

在经过了两年的准备,以及迁移了几个应用项目积累了让我有信心的经验之后,我最近在开始将团队里面最大的一个项目,从 .NET Framework 4.5 迁移到 .NET 6 上。这是一个从 2016 时开始开发,最多有 50 多位开发者参与,代码的 MR 数量过万,而且整个团队没有一个人能说清楚项目里面的所有功能。此项目引用了团队内部的大量的基础库,有很多基础库长年不活跃。此应用项目当前也有近千万的用户量,迁移的过程也需要准备很多补救方法。如此复杂的一个项目,自然需要用到很多黑科技才能完成到 .NET 6 的落地。本文将告诉大家这个过程里,我踩到的坑,以及学到的知识,和为什么会如此做

记因为 NVIDIA 显驱错误而让 WPF 应用启动闪退问题

本文记录一个因为 NVIDIA 显卡驱动错误而让 WPF 应用启动闪退问题

白板类应用的业务事件分发模式

在画板上延伸业务的事件,可以通过画板本身,利用路由事件分发,此时能解决依赖事件业务对具体业务对象的依赖

用自动机的思想说明时间断片是无法感知的

用自动机可以模拟出一个世界,虽然这个世界是虚拟的,但这个世界里面将会根据基础的自动机规则自动推算出很多有趣的规则。人类也能很简单理解在自动机模拟的世界里面,在这个世界里面的生物是无法感知时间断片的

程序猿修养 使用 NuGet 发射卫星只需要三步

软件行业和其他行业不相同,在很多行业想要复用前人的知识,需要重新再制造一遍。而软件行业,特别是 dotnet 系的技术,想要用前人的经验只需要使用前人写的库。随着越来越多的基础设施和底层库的积累,现在开发一个软件的速度会越来越快。在使用 dotnet 技术栈时,可以通过 NuGet 方便使用前人的库或发布自己的库和工具。有很多功能,其实只需要知道用哪个库和如何用,底层细节可以在完全不知道不了解的情况下也能用起来