自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 问答 (3)
  • 收藏
  • 关注

转载 C#学习之UI线程和线程池线程之间通讯之TaskScheduler.FromCurrentSynchronizationContext()

讲了如何在UI线程和线程池线程之间通讯。一般来说,UI线程拥有的对象,其他线程是无法操作的。但是.Net有一个很重要的抽象对象——TaskScheduler(任务调度器)。它协调着不同任务(线程)的运行,使得线程池中的线程有了操作UI线程的可能。在我以前不知道OberservableCollection和WPF开发的时候,都是要么使用 Invoke方法,要么就是使用TaskScheduler。这篇

2017-05-04 14:56:27 4673

转载 C#学习之Task.ContinueWith(连续的任务)的使用

通过任务,可以指定在任务完成之后,应开始运行之后另一个特定任务。例如,一个使用前一个任务的结果的新任务,如果前一个任务失败了,这个任务就应执行一些清理工作。任务处理程序都不带参数或者带一个对象参数,而任务的连续处理方法都有一个Task类型的参数,这里可以访问起始任务的相关信息:如下面的示例代码:   1: using System;   2: using System.

2017-05-04 11:31:56 25248

转载 C#学习之Task 的用法2

随着 .NET 4.0的到来,她与以前各版本的一个明显差别就是并行功能的增强,以此来适应这个多核的世界。于是引入了一个新概念---任务,作为支持并行运算的重要组成部分,同时,也作为对线程池的一个补充和完善。从所周知,使用线程池有两个明显的缺点,那就是一旦把我们要执行的任务放进去后,什么时候执行完成,以及执行完成后需要返回值,我们都无法通过内置的方式而得知。由于任务(Task)的推出,使得我们对并行

2017-05-04 11:29:50 5006

转载 comboBox.SelectedItem与SelectedText区别

1、comboBox.SelectedItem是指当前选定项的对象,而不是文本;SelectedItem 属性设置为一个对象时,ComboBox尝试使该对象成为列表中当前选定的对象。如果在列表中找到了该对象,则将它显示在ComboBox的编辑部分,并且将SelectedIndex属性设置为相应的索引。如果列表中不存在该对象,则SelectedIndex属性保留其当前值。  2、comboB

2017-05-04 11:21:48 8251

转载 C#学习之Task 的用法1

其实Task跟线程池ThreadPool的功能类似,不过写起来更为简单,直观。代码更简洁了,使用Task来进行操作。可以跟线程一样可以轻松的对执行的方法进行控制。顺便提一下,配合CancellationTokenSource类更为可以轻松的对Task操作的代码进行中途终止运行,会在后面的章节中讲述。如果我们使用线程池来实现某几个方法运行,然后等待运行完成的大概会编写如下代码:

2017-05-04 10:46:37 1020

转载 C#中dll调用方法

一、      DLL与应用程序动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一,打开Windows系统文件夹,你会发现文件夹中有很多DLL文件,Windows就是将一些主要的系统功能以DLL模块的形式实现。动态链接库是不能直接执行的,也不能接收消息,它只是一个独立的文件,其中包含能被程序或其

2017-04-28 17:02:33 954

原创 C#学习之帧校验序列码FCS

在上位机与PLC通信中,为了更好的校验发送与接收的数据的准确性,一般都会加一位校验位,校验码的算法有多种,帧校验序列码FCS就是其中的一种。   帧校验序列码FCS ( Frame Check Sequences)是为提高通信的可靠性设置的。将每一帧中的第一个字符@到该帧中正文的最后一个ASCII 字符作“异或”运算, 并将异或的结果转换为两个ASCII码, 便得到了FCS , 它作为

2017-04-24 09:38:18 8415

转载 C#学习之ToString()和Convert.ToString()的用法区别

一、概念说明在C#中所有继承自object的类都有tostring()方法,在没有特别声明的情况下,C#中的类都是默认继承自object,所以都有tostring()方法;而Convert.ToString(param)(其中param参数的数据类型可以是各基本数据类型,也可以是bool或object类对像; 二、ToString()和Convert.ToString()的区别一般

2017-04-21 13:29:15 4447

转载 C#中substr和substring的区别

substr(start[,length])表示从start位置开始取length个字符串substring(start,end)表示从start,到end之间的字符串,包括start位置的字符但是不包括end位置的字符 Js的substring和C#的Substring的作用都是从一个字符串中截取出一个子字符串,但它们的使用方法却有很大的不同,下边我们来比较看看:Js的s

2017-04-21 13:09:56 9515

转载 C#学习之byte数组与结构体之间的转换

原文: http://www.cnblogs.com/sunrack/articles/1244043.html//**注意在我的实际项目中直接调用字节转换,并没有定义结构体在写C#TCP通信程序时,发送数据时,只能发送byte数组,处理起来比较麻烦不说,如果是和VC6.0等写的程序通信的话,很多的都是传送结构体,在VC6.0中可以很方便的把一个char[]数组转换为一个结构体,而

2017-04-21 09:59:10 7818 1

原创 C#学习之time控件和timer_tick事件

Timer控件:Timer控件只有绑定了Tick事件,和设置Enabled=True后才会自动计时,停止计时可以用Stop()控制,通过Stop()停止之后,如果想重新计时,可以用Start()方法来启动计时器。Timer控件和它所在的Form属于同一个线程;timer1_Tick:是Timer对象的一个事件,表示在设定的时间间隔后自动触发的事件。比如说我们想执行一段代码功能 时间间隔为1秒。

2017-04-19 16:56:28 35986 1

转载 C#从三通道图像数据流转到HObject

用相机SDK采图的话很多时候得到的是一个数据流(byte[])或者指针IntPtr,单通道转换gen_image1还比较方便,三通道gen_image3发现它要三个颜色分量的指针,头大,这是个比较简单呆板的转换方法;下面进入正题。 //命名空间 using System; using System.Drawing; using System.IO; using Syst

2017-04-18 13:49:40 6407

转载 C#学习之IntPtr类型

C#中的IntPtr类型称为“平台特定的整数类型”,它们用于本机资源,如窗口句柄。资源的大小取决于使用的硬件和操作系统,但其大小总是足以包含系统的指针(因此也可以包含资源的名称)。 所以,在您调用的API函数中一定有类似窗体句柄这样的参数,那么当您声明这个函数时,您应该将它显式地声明为IntPtr类型。 例如,在一个C#程序中调用Win32API mciSendString函数控制光盘驱动

2017-04-18 12:20:22 24043 2

转载 C#基础之unsafe code(不安全代码)

1.为何要有unsafe    也许是为了实现CLR类型安全的目标吧,默认情况下,C#没有提供指针的使用算法,但是有些情况下也可能需要指针这样直接访问内存的东西(虽然目前我还没有用过),但是有时候程序员非常清楚程序的运行状况,需要使用指针直接访问内存以便于提高性能或者调试、监控程序运行的内存的使用状况,以便于采取相应的措施。还有一些情况是当我们需要调用外面DLL中的函数又不能使用DllIm

2017-04-18 11:20:22 2821 1

转载 C#学习之as是什么意思?

(1)as运算符用于执行引用类型的显式类型转换。 如果要转换的类型与指定类型兼容,转换就会成功;如果类型不兼容,则返回null。as 运算符类似于类型转换,所不同的是,当转换失败时,as 运算符将返回null,而不是引发异常。(2)形式:表达式as 类型as的规则如下:1. 检查对象类型的兼容性,并返回结果,如果不兼容就返回null;2. 不会抛出异常;3. 如果结果判断为空,则强制执行类型转换将

2017-04-18 10:59:35 2881

转载 C#学习之关于lock

lock首先先上官方Msdn的说法lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区。 如果其他线程尝试进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。lock 关键字在块的开始处调用 Enter,而在块的结尾处调用 Exit。 ThreadInterruptedException 引发,如果 Interrupt 中断等

2017-04-17 13:06:23 2480

转载 C#学习之Queue分析

1、Queue定义队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。 2、优点 a、能对集合进行顺序处理(先进先出)。 b、能接受null值,并且允许重复的元素。 3、 Queue的构造器构造器函数注释Queue

2017-04-17 10:15:02 4357

转载 c#学习之??和?分别代表的意思

1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。例如:string str=null; 是正确的,int i=null; 编译器就会报错。为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?"例如:int? 表示可空的整形,DateTime? 表示可为空的时间。T? 其实是System.Nul

2017-04-14 16:23:15 239

原创 c#学习之Parse是什么意思

Parse是什么意思是"解析"的意思,即数据类型转换.如:int.Parse(array[0])//**把array[0]获取的数据转换成int型;备注:不是强制类型转换.强转是这样写的:(int)(Console.ReadLine())

2017-04-10 15:32:11 10998 1

原创 C#学习之PadLeft的意思

PadLeft的意思有时候,为了让格式统一,当位数不足时,给予补足。比如:2008-01-01 13:42:05,这其中就对月、日、秒进行了补位。在 C# 中可以对字符串使用 PadLeft 和 PadRight 进行轻松地补位。PadLeft(int totalWidth, char paddingChar) //在字符串左边用 paddingChar 补足 totalWidth

2017-04-10 15:29:49 1076

转载 C#学习之ToString()格式大全

一、基本格式:stringstr1=string.Format("{0:N1}",56789);               //result: 56,789.0stringstr2=string.Format("{0:N2}",56789);               //result: 56,789.00stringstr3=string.Format("{0:N3}",5678

2017-04-10 15:16:21 926

转载 C#学习之StringBuilder类的使用总结

String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,

2017-04-10 10:10:57 187

转载 C#学习之资源的理解

一:什么是资源在开始本文前,需要一些准备知识。首先要提出“什么是资源”。在CLR出来之后,Windows系统资源开始分为“非托管资源”和“托管资源”。非托管资源是指:所有的Window内核对象(句柄)都是非托管资源,如对于Stream,数据库连接,GDI+的相关对象,还有Com对象等等,这些资源并不是受到CLR管理;托管资源是指:由CLR管理分配和释放的资源,即由CLR里new出来的对

2017-03-31 14:48:32 396

转载 halcon学习之仿射变换的理解

仿射变换可以理解为・经过对坐标轴的放缩,旋转,平移后原坐标在在新坐标域中的值更简洁的说:・仿射变换=线性变换+平移

2017-03-30 17:00:43 2529

转载 halcon学习之模板匹配

基于HALCON的模板匹配方法总结    德国MVTec公司开发的HALCON机器视觉开发软件,提供了许多的功能,在这里我主要学习和研究了其中的形状匹配的算法和流程。HDevelop开发环境中提供的匹配的方法主要有三种,即Component-Based、Gray-Value-Based、Shape-Based,分 别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配。这三种

2017-03-30 15:46:16 751

原创 halcon学习之tuple_find

tuple_find( T1,T2 ,T3):含义:Return the indices of all occurrences of a tuple within another tuple.    //**TupleFind获取某个元素在另一个数组里的所有位置值,并就这个位置返回一个数组;    //**即寻找T2在T1中所有出现的位置值,并返回到数组T3中;

2017-03-30 15:06:58 5503

转载 halcon学习之tuple比较运算

//执行两个tuple数组之间的相互比较void testComparison() { HTuple tuple1; tuple1[0] = 1; tuple1[1] = 1; tuple1[2] = 2;HTuple tuple2;tuple2[0] = 1;tuple2[1] = 2;tuple2[2] = 1;HTuple

2017-03-30 13:35:23 4099

转载 halcon学习之find_ncc_model

函数原型: find_ncc_model( Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels : Row, Column, Angle, Score ) 函数作用:用于NCC模板匹配。参数Angle

2017-03-30 13:14:28 14777

转载 halcon学习之solution matching模型的选择和创建

一,大致介绍 1      matching指的是从一张图片中找出既有对象的位置的方法,这些方法可以应用来很多不同的领域。匹配的主要方式是使用一个所找对象的模板,创建一个模型来用于在图片中搜索。在halcon中,主要有两大类匹配方法,一类使用对象的灰度值以及像素点和周边像素的关系来建立匹配模型,另一类则根据对象的轮廓形状来进行匹配。匹配的输出信息通常为图片中的位置信息,一般应用中,也会需要

2017-03-30 11:12:30 1007

原创 Halcon学习笔记

1、complement ( Region , RegionComplement )反回并填充Region的补充(互补)区域

2017-03-30 10:18:39 1641

转载 C# openfiledialog的使用

文件对话框(FileDialog)一、打开文件对话框(OpenFileDialog) 1、 OpenFileDialog控件有以下基本属性InitialDirectory 对话框的初始目录Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*"FilterIndex 在对话框中选择的文件筛选器的索引,

2017-03-29 14:05:29 684

转载 C# InvokeRequired和Invoke

C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它。此时它将会在内部调用new MethodInvoker(LoadGlobalImage)来完成下面的步骤,这个做法保证了控件的安全,你可以这样理解,有人想找你借钱,他可以直接在你的钱包中拿,这样太不安全,因此必须让别人先要告

2017-03-29 11:48:07 1269

转载 C#中DataGridView控件使用大全

标签: c datagridview 分类: C/C++/C#DataGridView 动态添加新行: DataGridView控件在实际应用中非常实用,特别需要表格显示数据时。可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行。假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件动态添加新行的两种方法:

2017-03-28 15:41:29 625

转载 C#中的Equals与==

一:Equals()方法比较的是两个对象的内容是否一致.equals也就是比较引用类型是否指向同一个对象。比如我们需要比较两个对象是否相等,比如在一个ArrayList中进行排序查找等操作时。System.Object提供了Equals()虚方法:class Object{public virtual Boolean Equals(object o){if (t

2017-03-28 13:37:09 2124

转载 关于委托deleagate

1. 委托是什么?其实,每个人都委托都有不同的见解,因为看问题的角度不同。个人可以从以下2点来理解: (1) 从数据结构来讲,委托是和类一样是一种用户自定义类型。 (2) 从设计模式来讲,委托(类)提供了方法(对象)的抽象。既然委托是一种类型,那么它存储的是什么数据?我们知道,委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的

2017-03-23 17:07:20 502

转载 关于switch语句的使用

switch  case语句适用于从一组互斥的分支中选择一个执行分支。值得注意的就是case的值必须是常量表达式不允许是变量。C#中的switch  case语句更安全,如果激活块中靠前的一个case子句,后面的case子句就不会被激活(除非使用goto语句、但不建意使用)。注意switch  case语句有一种例外情况,如果一个case子句为空,就可以从这个c

2017-03-23 11:56:50 585

原创 Form的close()和Dispose()的区别

字面理解:Close   - 关闭Dispose - 清除/释放说明:Close表示将当前资源关闭,以Connection 数据库连接为例,如果是连接状态,调用Close之后,该连接会被关闭,但是后续依然可以Open并调用Dispose表示将当前资源关闭,以Connection 数据库连接为例,如果是连接状态,调用Dispose之后,该连接会关闭并被销毁,打上回

2017-03-23 11:37:53 2467

原创 判断窗体是否打开

Form1 form = null;  private void button1_Click(object sender, EventArgs e)  {      if (form == null || form.IsDisposed)      {          form = new Form1();          form.ShowDialog();

2017-03-23 09:57:13 1880

转载 C# Controls.Remove 和 Controls.Clear()

通俗的讲,Controls.Remove 和 Controls.Clear()的主要差别在于,Controls.Remove 可以实现一个一个的删除控件,而 Controls.Clear()是将所有的控件一次性强制删除。如果使用foreach方法,借助Controls.Remove,按理说也可以做到删除全部控件,即:   foreach (Control mControl in t

2017-03-23 08:59:00 3015

转载 关于LinkedList和LinkedListNode

1.概念: List是数组链表LinkedList是指针链表、双向链表选择List还是LinkedList要看你的使用特点.数组链表访问快,复杂度O(1),但是添加删除复杂度O(n)指针链表访问复杂度是O(n),但是添加删除很快O(1)2.含义LinkedList集合类没有非泛型类的版本,它是一个双向链表,它的元素指向元素的前一个与后一个元素链表的优点是:如果要

2017-03-22 23:51:50 12537 1

空空如也

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

TA关注的人

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