自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

walterlv - 吕毅

欢迎访问 https://blog.walterlv.com/ 热爱设计,不止是程序,更是艺术!

  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 通过设置启用 Visual Studio 默认关闭的大量强大的功能提升开发效率

使用 Visual Studio 开发 C#/.NET 应用程序,以前有 ReSharper 来不足其各项功能短板,后来不断将 ReSharper 的功能一点点搬过来稍微好了一些。不过直到 Visual Studio 2019,才开始渐渐可以和 ReSharper 拼一下了。如果你使用 Visual Studio 2019,那么像本文这样配置一下,可以大大提升你的开发效率。本文内容工具选项文...

2019-10-28 09:31:22 1819

原创 git fetch 失败,因为 unable to resolve reference 'refs/remotes/origin/xxx': reference broken

我在使用 git fetch 命令的时候,发现竟然会失败,提示错误 error: cannot lock ref 'refs/remotes/origin/xxx': unable to resolve reference 'refs/remotes/origin/xxx': reference broken。本文介绍如何修复这样的错误,并探索此错误产生的原因。本文内容错误修复错误在使用...

2019-10-28 09:35:39 5747 1

原创 WPF 不要给 Window 类设置变换矩阵(应用篇)

WPF 的 Window 类是不允许设置变换矩阵的。不过,总会有小伙伴为了能够设置一下试图绕过一些验证机制。不要试图绕过,因为你会遇到更多问题。本文内容试图设置变换矩阵绕过验证小心异常试图设置变换矩阵当你试图给 Window 类设置变换矩阵的时候,会出现异常:System.InvalidOperationException:“转换对于 Window 无效。”无论是缩放还是旋转,都...

2019-10-28 09:34:44 395

原创 WPF 不要给 Window 类设置变换矩阵(分析篇):System.InvalidOperationException: 转换不可逆。

最近总是收到一个异常 “System.InvalidOperationException: 转换不可逆。”,然而看其堆栈,一点点自己写的代码都没有。到底哪里除了问题呢?虽然异常堆栈信息里面没有自己编写的代码,但是我们还是找到了问题的原因和解决方法。本文内容异常堆栈分析过程源代码`PointUtil.TryApplyVisualTransform``PointUtil.TryClientToR...

2019-10-28 09:33:48 697 2

原创 提高使用 Visual Studio 开发效率的键盘快捷键

Visual Studio 的功能可谓真是丰富,再配合各种各样神奇强大的插件,Visual Studio 作为太阳系最强大的 IDE 名副其实。如果你能充分利用起 Visual Studio 启用这些功能的快捷键,那么效率也会很高。本文内容建议记住万能重构转到所有重构重命名其他IntelliSense 自动完成列表智能感知参数信息编写代码格式化其他导航书签显示建议记住功能快捷键...

2019-10-28 09:30:16 623

原创 WPF 的 Application.Current.Dispatcher 中,Dispatcher 属性一定不会为 null

在 WPF 程序中,可能会存在 Application.Current.Dispatcher.Xxx 这样的代码让一部分逻辑回到主 UI 线程。因为发现在调用这句代码的时候出现了 NullReferenceException,于是就有三位小伙伴告诉我说 Current 和 Dispatcher 属性都可能为 null。然而实际上这里只可能 Current 为 null 而此上下文的 Dispat...

2019-10-28 09:27:59 3003

原创 WPF 的 Application.Current.Dispatcher 中,为什么 Current 可能为 null

在 WPF 程序中,可能会存在 Application.Current.Dispatcher.Xxx 这样的代码让一部分逻辑回到主 UI 线程。因为发现在调用这句代码的时候出现了 NullReferenceException,于是就有三位小伙伴告诉我说 Current 和 Dispatcher 属性都可能为 null。然而实际上这里只可能 Current 为 null 而此上下文的 Dispat...

2019-10-28 09:00:02 2561

原创 解决 WPF 嵌套的子窗口在改变窗口大小的时候闪烁的问题

因为 Win32 的窗口句柄是可以跨进程传递的,所以可以用来实现跨进程 UI。不过,本文不会谈论跨进程 UI 的具体实现,只会提及其实现中的一个重要缓解,使用子窗口的方式。你有可能在使用子窗口之后,发现拖拽改变窗口大小的时候,子窗口中的内容不断闪烁。如果你也遇到了这样的问题,那么正好可以阅读本文来解决。本文内容问题解决原因问题你可以看一下下面的这张动图,感受一下窗口的闪烁:实际上在拖...

2019-10-28 08:58:23 1994 2

原创 System.ComponentModel.Win32Exception (0x80004005): 无效的窗口句柄。

在 WPF 获取鼠标当前坐标的时候,可能会得到一个异常:System.ComponentModel.Win32Exception:“无效的窗口句柄。”。本文解释此异常的原因和解决方法。异常获取鼠标当前相对于元素 element 的坐标的代码:var point = Mouse.GetPosition(element);或者,还有其他的代码:var point1 = e.PointF...

2019-10-28 08:55:42 6348

原创 使用 SetParent 跨进程设置父子窗口时的一些问题(小心卡死)

在微软的官方文档中,说 SetParent 可以在进程内设置,也可以跨进程设置。当使用跨进程设置窗口的父子关系时,你需要注意本文提到的一些问题,避免踩坑。本文内容跨进程设置 `SetParent`消息循环强制同步消息循环强制同步如何解决跨进程设置 SetParent关于 SetParent 函数设置窗口父子关系的文档可以看这个:SetParent function (winuser.h...

2019-10-28 08:54:26 6088 7

原创 在使用 .NET Remoting 技术开发跨进程通信时可能遇到的各种异常

在使用 .NET Remoting 开发跨进程应用的时候,你可能会遇到一些异常。因为这些异常在后验的时候非常简单但在一开始有各种异常烦扰的时候却并不清晰,所以我将这些异常整理到此文中,方便小伙伴们通过搜索引擎查阅。本文内容连接到 IPC 端口失败: 系统找不到指定的文件找不到请求的服务信道“ipc”已注册连接到 IPC 端口失败: 系统找不到指定的文件System.Runtime.Rem...

2019-10-28 08:53:45 2074

原创 System.InvalidOperationException:“寄宿的 HWND 必须是指定父级的子窗口。”

当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现错误:“寄宿的 HWND 必须是指定父级的子窗口。”。这是很典型的 Win32 错误,本文介绍如何修复此错误。本文内容问题原因和解决办法我们在 MainWindow 中嵌入一个其他的窗口来承载新的 WPF 控件。一般情况下我们当然不会这么去做,但是如果我们要跨越进程边界来完成 WPF 渲染内容的融合的时候,就需要嵌入一...

2019-10-28 08:52:56 1619

原创 System.InvalidOperationException:“BuildWindowCore 无法返回寄宿的子窗口句柄。”

当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现错误:“BuildWindowCore 无法返回寄宿的子窗口句柄。”。这是很典型的 Win32 错误,本文介绍如何修复此错误。本文内容问题原因和解决办法我们在 MainWindow 中嵌入一个其他的窗口来承载新的 WPF 控件。一般情况下我们当然不会这么去做,但是如果我们要跨越进程边界来完成 WPF 渲染内容的融合的时...

2019-10-19 09:06:42 1766

原创 程序员可能会使用的各种命名规则

古老的程序员们有时会纠结命名问题,而现在,程序员们的命名已经开创了数个流派。本文整理了程序员们命名会使用到的各种流派,当然一些编程语言会同时使用数个流派。本文内容PascalCasecamelCasesnake_casekebab-casePascalCase有很多个名字,除了 PascalCase 还有 UpperCamelCase, BumpyCase。所有单词直接连接,连接的每个单...

2019-10-19 09:05:36 603

原创 使用 C# 中的 dynamic 关键字调用类型方法时可能遇到的各种问题

你可以使用 dynamic 来定义一个变量或者字段,随后你可以像弱类型语言一样调用这个实例的各种方法,就像你一开始就知道这个类型的所有属性和方法一样。但是,使用不当又会遇到各种问题,本文收集使用过程中可能会遇到的各种问题,帮助你解决掉它们。本文内容快速入门编译错误:缺少编译器要求的成员对于 .NET Core 或者 .NET Standard 项目对于 .NET Framework 项目异常...

2019-10-19 09:04:26 3115

原创 设计一个 .NET 可用的弱引用集合(可用来做缓存池使用)

我们有弱引用 WeakReference<T> 可以用来保存可被垃圾回收的对象,也有可以保存键值对的 ConditionalWeakTable。我们经常会考虑制作缓存池。虽然一般不推荐这么设计,但是你可以使用本文所述的方法和代码作为按垃圾回收缓存的缓存池的设计。本文内容设计思路设计原则设计实践分析踩坑`IList``ICollection``IEnumerable``object...

2019-10-19 09:03:13 310

原创 通过 mklink 收集本地文件系统的所有 NuGet 包输出目录来快速调试公共组件代码

我们做的公共库可能通过 nuget.org 发布,也可能是自己搭建 NuGet 服务器。但是,如果某个包正在开发中,需要快速验证其是否解决掉一些诡异的 bug 的话,除了单元测试这种间接的测试方法,还可以在本地安装未发布的 NuGet 包的方法来快速调试。本文介绍如何本地打包发布 NuGet 包,然后通过 mklink 收集所有的本地包达到快速调试的目的。本文内容将本地文件夹作为 NuGet...

2019-10-19 09:02:20 317

原创 如何为非常不确定的行为(如并发)设计安全的 API,使用这些 API 时如何确保安全

.NET 中提供了一些线程安全的类型,如 ConcurrentDictionary<TKey, TValue>,它们的 API 设计与常规设计差异很大。如果你对此觉得奇怪,那么正好阅读本文。本文介绍为这些非常不确定的行为设计 API 时应该考虑的原则,了解这些原则之后你会体会到为什么会有这些 API 设计上的差异,然后指导你设计新的类型。本文内容不确定性API 用法指导同一个上下文...

2019-10-19 09:00:55 299

原创 通过 AppSwitch 禁用 WPF 内置的触摸让 WPF 程序可以处理 Windows 触摸消息

WPF 框架自己实现了一套触摸机制,但同一窗口只能支持一套触摸机制,于是这会禁用系统的触摸消息(WM_TOUCH)。这能够很大程度提升 WPF 程序的触摸响应速度,但是很多时候又会产生一些 Bug。如果你有需要,可以考虑禁用 WPF 的内置的实时触摸(RealTimeStylus)。本文介绍禁用方法,使用 AppSwitch,而不是网上广为流传的反射方法。本文内容如何设置 AppSwitch...

2019-10-19 09:00:12 1024

原创 System.InvalidOperationException:“寄宿 HWND 必须是子窗口。”

当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现错误:“System.InvalidOperationException:“寄宿 HWND 必须是子窗口。””。这是很典型的 Win32 错误,本文介绍如何修复此错误。本文内容一个最简的嵌入其他窗口的例子寄宿 HWND 必须是子窗口一个最简的嵌入其他窗口的例子我们在 MainWindow 中嵌入一个其他的窗口来承载新...

2019-10-19 08:56:54 1306

UWP 程序所需的最少 Logo 资源

https://walterlv.github.io/post/create-uwp-app-from-zero-0.html 中 UWP 程序所需的最少 Logo 资源

2018-07-25

空空如也

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

TA关注的人

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