摘要: 在C#中,控件的Invoke、BeginInvoke和InvokeAsync方法都用于在UI线程上执行代码,但它们在执行方式、返回值和使用场景上有所不同。 1. 方法差异 Invoke 方法 同步调用:阻塞调用线程,直到UI线程执行完委托。 返回值:可以返回委托执行的结果。 异常处理:如果在UI线程 阅读全文
posted @ 2025-12-21 19:19 长松入霄汉远望不盈尺 阅读(1) 评论(0) 推荐(0)
摘要: 在 C# 程序中使用 OCX(ActiveX)控件是一个相对直接的过程。微软提供了很好的互操作性支持。 以下是详细的方法和步骤。 核心原理 C# 通过 "运行时可调用包装" 将 COM 组件(如 OCX)包装成 .NET 能够识别和使用的类。我们不需要直接与复杂的 COM 接口打交道。 详细步骤 以 阅读全文
posted @ 2025-11-08 11:17 长松入霄汉远望不盈尺 阅读(28) 评论(0) 推荐(0)
摘要: C# 可以使用 OCX 控件,因为 .NET 框架提供了对 COM 组件(包括 OCX)的互操作支持(COM Interop)。只要通过正确的配置,就能在 C# 项目中调用 OCX 控件的功能。 C# 使用 OCX 控件的核心原理 OCX 本质是 COM 组件,而 .NET 框架通过 COM 互操作 阅读全文
posted @ 2025-11-08 11:05 长松入霄汉远望不盈尺 阅读(37) 评论(0) 推荐(0)
摘要: 核心结论 可以这样简单地理解它们(ActiveX 控件 ocx文件 OCX)的演变关系: OCX(一种文件格式) → OLE 控件(一种技术) → ActiveX 控件(一个营销新名称) 换句话说: OCX 是文件的容器和扩展名。 ActiveX 控件 是这种技术的营销名称和规范。 它们本质上是同一 阅读全文
posted @ 2025-11-08 10:50 长松入霄汉远望不盈尺 阅读(17) 评论(0) 推荐(0)
摘要: 一句话概括 OCX文件是一种主要用于旧版Windows程序的“插件”或“组件”,它为程序提供了额外的功能,比如显示一个特殊的日历控件、播放视频或处理富文本。 详细解释 1. 是什么? 技术定义:OCX 是 “OLE Control Extension” 的缩写,即 OLE 控件扩展。它定义了这种组件 阅读全文
posted @ 2025-11-08 10:47 长松入霄汉远望不盈尺 阅读(31) 评论(0) 推荐(0)
摘要: 在C#中,Task.WaitAll 和 Task.WhenAll 都是用于等待多个任务完成的方法,但它们在工作方式和使用场景上有重要区别。 1. 基本区别 Task.WaitAll 同步阻塞:阻塞当前线程直到所有任务完成 返回值:void 异常处理:抛出 AggregateException Tas 阅读全文
posted @ 2025-11-05 11:13 长松入霄汉远望不盈尺 阅读(83) 评论(0) 推荐(0)
摘要: 在C#中,多维数组(如double[,])与交错数组(double[][])不同。 多维数组是矩形数组,在内存中是连续存储的。 但是,Span最初是为连续内存区域设计的,因此对于多维数组,我们可以使用MemoryMarshal来创建一个Span,但需要注意维度。 实际上,对于多维数组,我们可以将其视 阅读全文
posted @ 2025-10-27 13:22 长松入霄汉远望不盈尺 阅读(27) 评论(0) 推荐(0)
摘要: fixed 语句是 C# 中指针功能的核心组成部分,它的工作原理涉及到 CLR(公共语言运行时)的垃圾回收机制。让我详细解释它的工作原理: 1. 垃圾回收与内存移动 在 .NET 的托管环境中,垃圾回收器(GC)会定期执行以下操作: 回收不再使用的内存 压缩堆 - 移动存活对象来消除内存碎片 // 阅读全文
posted @ 2025-10-27 12:59 长松入霄汉远望不盈尺 阅读(20) 评论(0) 推荐(0)
摘要: 在C#中,指针是一个高级特性,通常用于需要直接内存操作或与原生代码交互的场景。C#中的指针使用需要在不安全的上下文中进行,并且通常用于值类型(如int, double, struct等)。使用指针可以绕过CLR(公共语言运行时)的一些安全检查,因此必须谨慎使用。 1. 启用不安全代码 要使用指针,首 阅读全文
posted @ 2025-10-27 12:26 长松入霄汉远望不盈尺 阅读(54) 评论(0) 推荐(0)
摘要: 1️⃣C#代码片段如下: int a=1000,b=8; double[,] output = new double[a, b]; double [,]data=new double[a*128,b] unsafe { fixed (double* dataBasePtr = &data[0, 0] 阅读全文
posted @ 2025-10-27 12:08 长松入霄汉远望不盈尺 阅读(19) 评论(0) 推荐(0)