随笔分类 -  C#

C#
摘要:今年五月的 Build 大会上,微软说 .NET Core 3.0 将带来 WPF / Windows Forms 这些桌面应用的支持。当然,是通过 Windows 兼容包(Windows Compatibility Pack)实现的。为了提前检查你的程序是否能在未来跑在 .NET Core 3.0 阅读全文
posted @ 2018-09-26 21:11 walterlv 阅读(237) 评论(0) 推荐(0) 编辑
摘要:如果你关注过命令行参数,也许发现有时你会在命令行参数的第一个参数中中看到应用程序的路径,有时又不会。那么什么情况下有路径呢? 其实是否有路径只是取决于获取命令行参数的时候用的是什么方法。而这是 Windows 操作系统的机制,与具体的运行环境无关。 本文内容 测试程序 解释 总结 本文内容 测试程序 阅读全文
posted @ 2018-09-26 21:09 walterlv 阅读(286) 评论(0) 推荐(0) 编辑
摘要:对于 WPF 程序,如果你有某一个 UI 控件非常复杂,很有可能会卡住主 UI,给用户软件很卡的感受。但如果此时能有一个加载动画,那么就不会感受到那么卡顿了。UI 的卡住不同于 IO 操作或者密集的 CPU 计算,WPF 中的 UI 卡顿时,我们几乎没有可以让 UI 响应的方式,因为 WPF 一个窗 阅读全文
posted @ 2018-09-26 21:04 walterlv 阅读(681) 评论(0) 推荐(0) 编辑
摘要:使用反射,我们可以很容易地在运行时调用一些编译时无法确定的属性、方法等。然而,如果方法的参数中包含 ref 或 out 关键字的时候,又该怎么调用呢? 本文将介绍如何反射调用含 ref 或 out 关键字的方法。 比如我们有这样的类型: 那么反射的时候可以使用: 然而现在我们的函数是这样的,带一个 阅读全文
posted @ 2018-09-26 21:00 walterlv 阅读(2126) 评论(0) 推荐(1) 编辑
摘要:.NET 中提供了很多判断某个类型或实例是某个类的子类或某个接口的实现类的方法,然而这事情一旦牵扯到泛型就没那么省心了。 本文将提供判断泛型接口实现或泛型类型子类的方法。 本文内容 .NET 中没有自带的方法 我们需要自己编写方法 本文内容 .NET 中没有自带的方法 我们需要自己编写方法 .NET 阅读全文
posted @ 2018-09-26 20:59 walterlv 阅读(6618) 评论(0) 推荐(3) 编辑
摘要:使用反射,我们可以很容易地在运行时调用一些编译时无法确定的属性、方法等。那么如何注册事件呢? 本文将介绍如何使用反射注册事件。 本文内容 不使用反射 使用反射 安全地使用反射 参考资料 本文内容 不使用反射 使用反射 安全地使用反射 参考资料 不使用反射 使用反射 安全地使用反射 参考资料 不使用反 阅读全文
posted @ 2018-09-26 20:58 walterlv 阅读(1370) 评论(0) 推荐(0) 编辑
摘要:你做 .NET 开发的时候,一定用过 DllImport 这个特性吧,这货是用于 P/Invoke (Platform Invoke, 平台调用) 的。这种 DllImport 标记的方法都带有一个 extern 关键字。 那么有没有可能我们自己写一个自己的 extern 方法呢?答案是可以的。本文 阅读全文
posted @ 2018-09-09 10:10 walterlv 阅读(286) 评论(0) 推荐(0) 编辑
摘要:.NET 的 Process 类中提供了查找进程的若干方法,其中部分方法还比较消耗性能。如果你试图优化查找进程相关方法的性能,可能本文分享的一些耗时数据可以作为参考。 性能比较 Process 类中提供了四种查询进程的方法: GetProcesses 获取当前计算机或远程计算机上运行的所有进程。 G 阅读全文
posted @ 2018-08-27 22:14 walterlv 阅读(812) 评论(0) 推荐(0) 编辑
摘要:长文预警!!! UWP 程序有 .NET Native 可以将程序集编译为本机代码,逆向的难度会大很多;而基于 .NET Framework 和 .NET Core 的程序却没有 .NET Native 的支持。虽然有 Ngen.exe 可以编译为本机代码,但那只是在用户计算机上编译完后放入了缓存中 阅读全文
posted @ 2018-08-27 22:10 walterlv 阅读(1856) 评论(0) 推荐(0) 编辑
摘要:在 .NET Framework 4.7 以前,WPF 程序的触摸处理是基于操作系统组件但又自成一套的,这其实也为其各种各样的触摸失效问题埋下了伏笔。再加上它出现得比较早,触摸失效问题也变得更加难以解决。即便是 .NET Framework 4.7 以后也需要开发者手动开启 Pointer 消息,并 阅读全文
posted @ 2018-08-27 22:02 walterlv 阅读(449) 评论(0) 推荐(0) 编辑
摘要:手工在博客中添加 Front Matter 文件头可是个相当费事儿的做法,这种事情就应该自动完成。 .NET 中提供了非常方便的修改文件创建时间的方法,使用这种方法,能够帮助自动完成一部分文件头的编写或者更新。 相关类型 .NET 中提供了两个不同的设置创建和修改时间的入口: File 静态类 Fi 阅读全文
posted @ 2018-08-27 21:58 walterlv 阅读(6603) 评论(0) 推荐(0) 编辑
摘要:UWP 程序天生单实例。当然,新 API (10.0.17134)开始也提供了多实例功能。不过,传统 Win32 程序可就要自己来控制单实例了。 本文介绍简单的几个 Win32 方法调用,使 Win32 程序也支持单实例。 激活之前进程的窗口 我们可以通过进程名称找到此前已经启动过的进程实例,如果发 阅读全文
posted @ 2018-08-27 21:56 walterlv 阅读(565) 评论(0) 推荐(0) 编辑
摘要:各种操作系统的控制台都支持 ANSI 转义序列(ANSI Escape Code)。使用转义序列,可以对控制台进行很多额外的定制,例如修改颜色、修改标题栏,将文字添加下划线等。 当然,.NET 已经帮助我们封装了很大的一部分功能了,我们重点可以放在 .NET 没有封装的那部分上。 基本的准备代码 在 阅读全文
posted @ 2018-08-27 21:52 walterlv 阅读(733) 评论(0) 推荐(1) 编辑
摘要:WPF 自定义窗口样式有多种方式,不过基本核心实现都是在修改 Win32 窗口样式。然而,Windows 上的应用就应该有 Windows 应用的样子嘛,在保证自定义的同时也能与其他窗口样式保持一致当然能最大程度保证 Windows 操作系统上的体验一致性。 本文将分享一个我自制的标题栏按钮样式,使 阅读全文
posted @ 2018-08-27 21:42 walterlv 阅读(669) 评论(2) 推荐(0) 编辑
摘要:有些窗口天生就是为了辅助其它程序而使用的,典型的如“输入法窗口”。这些窗口不希望抢夺其它窗口的焦点。 有 Win32 方法来解决这样的问题,WS_EX_NOACTIVATE 便是关键。 具体来说,是给窗口样式中额外添加一个 WS_EX_NOACTIVATE 位。 当然,这里需要用到 P/Invoke 阅读全文
posted @ 2018-07-27 07:25 walterlv 阅读(2743) 评论(0) 推荐(1) 编辑
摘要:每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件、配置、应用启动流程代码和界面代码。然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始创建了一个 UWP 程序,用于探索这些文件的用途,了解 UWP 程序的启动流程。 本文分为两个部分: 阅读全文
posted @ 2018-07-27 07:19 walterlv 阅读(214) 评论(0) 推荐(0) 编辑
摘要:每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件、配置、应用启动流程代码和界面代码。然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始创建了一个 UWP 程序,用于探索这些文件的用途,了解 UWP 程序的启动流程。 本文分为两个部分: 阅读全文
posted @ 2018-07-27 07:17 walterlv 阅读(439) 评论(0) 推荐(0) 编辑
摘要:使用 Roslyn 进行源码分析时,我们会对很多不同种类的语法节点进行分析。如果能够一次性了解到各种不同种类的语法节点,并明白其含义和结构,那么在源码分析的过程中将会更加得心应手。 本文将介绍 Roslyn 中各种不同的语法节点、每个节点的含义,以及这些节点之间的关系和语法树结构。 基本概念 以上是 阅读全文
posted @ 2018-07-19 20:04 walterlv 阅读(699) 评论(0) 推荐(0) 编辑
摘要:WPF 自定义窗口样式有多种方式,不过基本核心实现都是在修改 Win32 窗口样式。然而,Windows 上的应用就应该有 Windows 应用的样子嘛,在保证自定义的同时也能与其他窗口样式保持一致当然能最大程度保证 Windows 操作系统上的体验一致性。 本文将使用 WindowChrome 来 阅读全文
posted @ 2018-07-19 20:03 walterlv 阅读(587) 评论(0) 推荐(1) 编辑
摘要:XPath 是 XML 路径语言(XML Path Language),用来确定XML文档中某部分位置的语言。无论是什么语言什么框架,几乎都可以使用 XPath 来高效查询 XML 文件。 本文将介绍 .NET 中的 XPath 相关类型的使用。 本文读写的 XML 文件会以 文章末尾的代码 - 假 阅读全文
posted @ 2018-06-26 20:58 walterlv 阅读(385) 评论(0) 推荐(0) 编辑