自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(274)
  • 收藏
  • 关注

原创 WinForm自定义DataGrivew表格控件样式—以及添加行号

事件对象

2025-03-31 11:47:19 300

原创 【机械视觉】C#+VisionPro联合编程之连接硬件工业相机———【七、分享两种C#+VisionPro抓取相机并操作的方式】(本文有介绍CogFrameGrabbers相机抓取类)

本文通过使用两个小例子介绍两种抓取相机的方式。第一种抓取方式是通过visionPro中的cogacqfifotool工具进行检测相机,并且进行配置,配置完成后将工具保存本地用于在WINFORM中加载。第二种方式是在C#中通过Cognex.VisionPro.CogFrameGrabbers类进行抓取相机,然后通过抓取到的相机对象创建ICogAcqFifo相机采集接口。从而进行操作。

2025-03-28 15:13:49 1218

原创 【机械视觉】C#+VisionPro联合编程———【六、visionPro连接工业相机设备】

通常连接相机涉及到硬件接口和软件配置。硬件方面,常见的接口有GigE、USB3、Camera Link等,需要确认相机的型号和接口类型,以及安装驱动。软件方面,VisionPro可能需要通过工具像QuickBuild来配置相机,或者使用CogAcqFifoTool来检测和连接相机。

2025-03-26 21:53:09 1654

原创 【C#高阶编程】—单例模式详解

单例模式是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式常用于需要全局唯一对象的场景,比如配置文件管理、日志记录、数据库连接池等。

2025-03-19 21:39:43 698

原创 【C#高级编程】—表达式树详解

表达式树是一种强大的工具,它允许你将代码逻辑表示为数据结构,并在运行时分析和操作这些逻辑。它的核心作用包括动态生成代码、分析代码逻辑以及与外部系统交互。表达式树在 LINQ、ORM 框架(如 Entity Framework)和动态查询等场景中发挥着重要作用。

2025-03-18 21:22:13 994

原创 C#—【特性详解以及自定义特性和通过反射读取特性】

目录C#—【特性详解以及自定义特性和通过反射读取特性特性的主要用途(举一些直观例子)1. 标记代码,让框架自动处理2. 数据验证(表单/模型校验)3. 控制序列化行为4. 生成文档(如API接口说明)5. 实现AOP(面向切面编程)为什么用特性而不用其他方法?日常开发中的高频场景一句话总结常见预定义特性(Predefined Attributes)示例代码自定义特性(Custom Attribute)一、如何定义自定义特性?二、如何应用自定义特性?三、如何通过反射读取特性?总结自定义特性和反射的应用实例。

2025-03-17 06:15:00 2246

原创 C#——【前台线程和后台线程详解】

通过合理选择线程类型,可以平衡应用程序的稳定性和响应性,同时避免资源泄漏或意外终止问题。

2025-03-15 06:45:00 1466

原创 C#—【在不同的场景该用哪种线程?】

避免在 UI 线程或 ASP.NET 请求上下文中使用(会导致死锁)在C#中有很多种线程操作方法但都运用在不同的场景。:尤其对于 I/O 操作,99% 的场景应首选。(ASP.NET Core 已优化线程池调度):避免长期占用线程池线程,导致其他任务排队。:结合线程池的复用能力和异步的高效 I/O。:集中捕获异常,避免未处理异常导致进程崩溃。:线程池复用线程,避免频繁创建/销毁开销。:长时间操作(>1秒)使用独立线程或。:异步释放线程,避免阻塞线程池线程。:线程池线程无法设置优先级或名称。

2025-03-14 11:23:44 1016

原创 C#—线程池详解

线程池(ThreadPool)是 .NET 提供的一种线程管理机制,通过复用线程减少创建/销毁开销,适用于高并发、短期任务的场景。核心作用:自动管理线程生命周期,优化资源利用率。适用场景:处理耗时 <1 秒的短期任务(如 HTTP 请求、轻量计算)。默认行为最小线程数 = CPU 核心数最大线程数 ≈ 1000(不同 .NET 版本有差异)使用原则短期任务用线程池,长期任务用独立线程避免阻塞线程池线程(使用释放线程)合理配置线程数(通过优先使用Task类(更现代的 API,支持取消/延续等操作)

2025-03-14 10:32:54 939

原创 C# 的 ManualResetEvent(线程同步操作) 类详解

是用于线程同步操作的类,允许一个或多个线程等待特定信号,以协调多个线程的执行顺序。它通过事件通知机制实现,确保线程在收到信号前保持阻塞,直到其他线程显式发出信号。多个工作线程需要等待某个公共条件(如资源初始化完成)满足后,才能同时开始工作。例如:主线程启动后台任务后需等待其初始化完成,再执行后续操作。:一旦处于终止状态(Signaled),所有等待线程立即释放,直到手动重置。:分阶段任务中,后续阶段需等待前一阶段所有线程完成。:多个工作线程等待某个共享资源(如数据加载完成)。进入阻塞状态,等待初始化完成。

2025-03-13 21:54:17 1242

原创 C#—闭包详解

定义:闭包是一个函数(如委托、Lambda表达式)与其引用的外部变量的绑定。这些变量的生命周期被延长,与闭包共存。捕获变量:闭包捕获的是变量的引用(而非值),因此外部变量的修改会反映到闭包内。// Lambda捕获count变量// 输出1// 输出2(闭包维持count状态)优势:简化代码结构,支持状态封装,增强函数灵活性。注意点:理解变量捕获机制,避免循环中的错误捕获,管理资源释放。

2025-03-13 15:38:30 397

原创 【机械视觉】C#+VisionPro联合编程———【五、硬币检测小项目实现(C#+VisionPro联合编程和csv文件格式操作)】

总共有十二张检测的图片,当点击检测按钮时检测当前展示的图片并且将检测效果展示在表格中,当点击上一页或下一页时换检测图片,点击保存本地时通过csv文件格式将表格数据保存,当下一次运行时将数据读取出来并且展示在表格中。此项目通过异步进行优化,在加载时改变了以往卡顿的情况,加载变得流畅。此项目检测时的逻辑代码是在visionPro中完成的。

2025-03-11 21:49:03 386

原创 【机械视觉】C#+VisionPro联合编程———【四、检测彩色保险丝实例,以及C#+VisionPro的两种写法】

在机械视觉C#+VisionPro联合编程编程中,在处理业务逻辑时通常会有两种写法,一种是将逻辑代码编写在visionPro中然后再使用C#将visionPro工具加载到vs中,另一种是先通过C#加载visionPro工具到vs中再使用C#在vs中编写逻辑代码。本篇文章将用检测彩色保险丝的实例将这两种写法分别展现出来。

2025-03-11 14:04:25 728

原创 C# backgroundworker类(后台线程)

密集型运算,如果直接在 UI 线程执行这样的运算就会出现UI不响应的问题。解决这类问题的主要途径是使用多线程,启动一个后台线程,把运算操作放在这个后台线程中完成。但是原生接口的线程操作有一些难度,如果要更进一步的去完成线程间的通信就会难上加难。它的主要目的是在不阻塞用户界面(UI)的情况下运行耗时操作,同时支持进度报告和任务取消。是简化桌面应用后台任务处理的经典工具,适合需要快速实现进度更新和取消功能的场景。在单独的线程中运行长时间操作(如文件下载、数据处理),防止UI线程被阻塞,保持界面响应。

2025-03-10 21:38:00 711

原创 【机械视觉】C#+VisionPro联合编程———【三、C#操作VisionPro中的工具详解(CogToolBlock ),以及实例】

在窗体加载时创建tb变量并且加载CogToolBlock给变量赋值,当点击打开图片时,根据设定好的路径打开图片并展示在cogRecordDisplay1上,点击更改图片时更改tb变量中的输入图片,点击测量时测量出图片结果并且展示。在窗体跳转时将CogToolBlock的变量传输到窗体2中并且展示在cogToolBlockEditV21上。在VisionPro中,CogToolBlock 是一种容器工具,可以将多个视觉工具(如CogBlob、CogPMAlign等)组合成一个可复用的流程。

2025-03-08 21:50:27 963

原创 【机械视觉】C#+visionPro联合编程———【二、位深图(CogImage8Grey),使用Bitmap和CogImageFileTool操作图像方式,以及图片读取和存储的2个实例】

在 C# 与 VisionPro 联合编程中,

2025-03-06 21:03:38 907

原创 【机械视觉】C#+visionPro联合编程———【一、C# + VisionPro 联合编程详解以及如何将visionPro工具加载到winform】

机械视觉(机器视觉)是通过计算机和图像处理技术,模拟人类视觉功能,用于工业自动化中的检测、定位、识别、测量等任务。C# 与 VisionPro 联合编程 是指利用 C# 语言的灵活性和 VisionPro(康耐视的工业视觉软件)的专业算法库,开发定制化的视觉应用系统。

2025-03-06 19:22:49 1239

原创 C#—csv文件格式操作实例【在winform表格中操作csv】

当在winform界面中点击读取按钮时弹出文件选择框,用户选择指定的csv文件然后将csv中的所有数据读取出来放置在datagridview控件,可以在datagridview控件中编辑数据,当点击保存按钮时 将datagridview控件中的所有数据存储在用户选择的csv格式文件路径中。

2025-03-05 21:51:16 564

原创 C#—csv文件格式操作

CSV(Comma-Separated Values,逗号分隔值)是一种简单且通用的文本文件格式,用于存储和交换表格数据(如电子表格或数据库内容)。它被广泛用于数据导入/导出、跨平台数据共享以及轻量级数据存储场景。

2025-03-04 21:53:07 881

原创 C#—Settings配置详解

在C#项目中,全局配置通常指的是应用程序的设置(settings),这些设置可以跨多个类或组件使用,并且通常用于存储应用程序的配置信息,如数据库连接字符串、用户偏好设置等。

2025-03-03 17:36:55 377

原创 【C#零基础从入门到精通】(二十八)——C#try异常处理详解

在 C# 中,异常处理是一种用于处理程序运行时出现的错误或异常情况的机制。它可以帮助开发者捕获并处理可能出现的异常,避免程序因异常而崩溃,提高程序的健壮性和稳定性

2025-02-17 10:15:00 726

原创 【C#零基础从入门到精通】(二十七)——C#命名空间详解

在 C# 中,命名空间(Namespace)是一种组织代码的方式,它提供了一种将相关的类、接口、结构体、枚举等类型分组的机制,有助于避免命名冲突,提高代码的可维护性和可读性。

2025-02-17 10:00:00 83

原创 【C#零基础从入门到精通】(二十六)——C#三大特征-多态详解

在 C# 中,多态是面向对象编程的重要特性之一,它允许不同的对象对同一消息做出不同的响应。多态可以分为静态多态和动态多态,

2025-02-17 09:45:00 767

原创 【C#零基础从入门到精通】(二十五)——C#三大特性-继承详解

在 C# 中,继承是面向对象编程的一个重要特性,它允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法,从而实现代码的复用和扩展。

2025-02-17 09:30:00 28

原创 【C#零基础从入门到精通】(二十四)——C#静态成员和非静态成员详解

在 C# 中,类的成员可以分为静态成员和非静态成员,它们在内存分配、访问方式、使用场景等方面存在显著差异。

2025-02-17 09:15:00 32

原创 【C#零基础从入门到精通】(二十三)——C#访问修饰符详解

在 C# 中,访问修饰符用于控制类、类成员(如字段、属性、方法等)的访问权限,一共有 6 种访问修饰符,分别是 public、private、protected、internal、protected internal 和 private protected。下面将详细介绍它们的功能、使用方法和区别。

2025-02-17 09:00:00 23

原创 【C#零基础从入门到精通】(二十二)——C#类和对象详解

类是一种用户自定义的数据类型,它是对现实世界中一类具有相同属性和行为的事物的抽象描述。可以把类看作是创建对象的模板或蓝图。类定义了对象所具有的属性(数据成员)和行为(方法成员)。

2025-02-17 05:30:00 203

原创 【C#零基础从入门到精通】(二十一)——C#枚举详解

在 C# 中,枚举(enum)是一种值类型,它允许你定义一组命名的常量。枚举提供了一种更具描述性和可读性的方式来表示一组相关的常量值。枚举类型通常用于表示一组有限的、离散的值,例如一周的天数、颜色、方向等。

2025-02-16 07:15:00 35

原创 【C#零基础从入门到精通】(二十)——C#结构体详解

在 C# 中,结构体(struct)是一种值类型,它可以封装数据和相关的功能。

2025-02-16 06:15:00 31

原创 【C#零基础从入门到精通】(十九)——C#字典详解

在 C# 中,字典是一种非常实用的数据结构,用于存储键值对(Key - Value Pairs),它允许通过键(Key)快速查找对应的值(Value)。C# 中主要使用 Dictionary 泛型类来实现字典功能,下面将从多个方面详细介绍 C# 字典。

2025-02-15 09:00:00 44

原创 【C#零基础从入门到精通】(十八)——C#list集合详解

在C#中,集合(Collection)是一种用于存储和管理一组元素的数据结构。List是.NET框架中非常常用的一种泛型集合类型,它提供了动态数组的功能,能够自动调整大小以容纳更多的元素。List属于System.Collections.Generic命名空间,因此在使用之前需要引入该命名空间。

2025-02-15 06:45:00 22

原创 【C#零基础从入门到精通】(十七)——C#ArrayList动态数组详解

在 C# 中,ArrayList 是 System.Collections 命名空间下的一个动态数组集合类,它可以存储不同类型的对象,并且大小可以动态增长。下面从多个方面详细介绍 ArrayList。

2025-02-14 09:00:00 122

原创 【C#零基础从入门到精通】(十六)——C#数组详解

在 C# 中,数组是一种用于存储相同类型元素的固定大小的有序集合。它可以包含任何数据类型,如整数、字符串、自定义对象等。以下从数组的声明、初始化、访问、多维数组、锯齿数组以及数组的常用操作方法等方面详细介绍 C# 数组。

2025-02-14 04:45:00 20

原创 【C#零基础从入门到精通】(十五)——C# Nullable可空类型详解

在 C# 中,可空类型是一项重要的特性,它允许值类型的变量可以表示其正常范围内的值,还可以表示为空(null)。在传统的值类型(如int、bool、DateTime等)中,它们不能直接赋值为null,而可空类型弥补了这一不足,下面从可空类型的定义、使用、操作符、转换以及与数据库交互等方面详细介绍。

2025-02-13 09:00:00 44

原创 【C#零基础从入门到精通】(十三)——C#方法/函数详解

在 C# 中,方法(也常被称为函数)是一段具有特定功能的、可重复使用的代码块。它可以接受输入参数,执行特定的操作,并返回一个结果。下面从方法的定义、调用、参数传递、返回值、重载、递归等多个方面详细介绍 C# 方法。

2025-02-12 07:30:00 26

原创 【C#零基础从入门到精通】(十二)——C# break、continue、goto:跳出循环详解

​在使用循环语句时,并不是必须等待循环完成后才能退出循环,我们也可以主动退出循环,C#为我们提供了 break、continue 和 goto 三种方式来跳出循环,

2025-02-12 04:30:00 64

原创 【C#零基础从入门到精通】(十四)——面向对象三大特征C#封装详解

C# 是一门面向对象编程语言,面向对象编程语言有三大特性,分别是封装、继承和多态。所谓封装就是将一个或多个项目(函数)集合在一个单元中,这个单元称之为类,我们可以根据需要通过访问权限修饰符来设定类中成员的范围和可见性。

2025-02-11 10:12:07 247

原创 【C#零基础从入门到精通】(十一)——C#Reandom随机类详解

Random类主要用于生成伪随机数序列。这里的 “伪随机” 是因为生成的随机数是基于一个初始值(种子)通过特定算法计算得出的,只要种子相同,生成的随机数序列就是相同的。

2025-02-11 08:00:00 189

原创 【C#零基础从入门到精通】(十)——C#for循环、foreach循环、while循环和do-while循环详解

在 C# 中,循环语句用于重复执行一段代码,直到满足特定条件为止。C# 提供了多种循环语句,包括for循环、foreach循环、while循环和do-while循环,下面将详细介绍这些循环语句。

2025-02-11 05:15:00 30

原创 【C#零基础从入门到精通】(九)——C#if和Switch判断语句详解

在 C# 中,判断语句用于根据不同的条件执行不同的代码块,是控制程序流程的重要工具。主要的判断语句包括if语句、switch语句,

2025-02-10 20:39:21 97

visionPro+C#联合编程二次开发-连接工业相机小项目

visionPro+C#联合编程二次开发—连接工业相机小项目

2025-03-31

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

TA关注的人

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