[置顶]python知识导航贴,持续更新

[置顶]C# 语言高级特性知识导航贴,持续更新

[置顶]netMarketing类库: 类库说明

[置顶]本站视觉相关教程整理贴子,持续更新

[置顶]C++相关导航贴,持续更新

[置顶]本站收费服务公告(netMarketing源码,工业自动化行业培训班等)

[置顶]2020年勇哥的机器视觉实验项目清单(大纲)

[置顶]本站连载贴子系列,持续更新中……

[置顶]勇哥的免费视频教程清单

[置顶]勇哥在B站发布的视频清单

[置顶]运动控制专题,持续更新

C# Task.Result与Task.GetAwaiter.GetResult()区别

前几天在用线程池执行一些任务时运到一种情形,就是回调方法中使用到了异步方法,但是回调方法貌似不支持async await的写法。这时候我应该如何处理呢?是使用Task.Result来获取返回结果,还是使用GetAwaiter.GetResult()呢?本文就来探讨下吧。这里先上我这种场景的伪代码:ThreadPool.QueueUserWorkItem(ExcuteScanProcess, nod...

C# const, static readonly的测试

const、static、readonly 一直以来勇哥都没有完全搞明白其区别。正好手里有项目用到static readonly,因此仔细研究了一翻。记录如下:static readonly myclass1 c1 = new myclass1();这里的初始化在定义时初始化,如果放在其它位置则报错。const int myPI 跟常量是一样的,你可以必须使用常量的地方直接使用,比如下面的cas...

C# 事件总线 EventBus

1. 引言事件总线这个概念对你来说可能很陌生,但提到观察者(发布-订阅)模式,你也许就很熟悉。事件总线是对发布-订阅模式的一种实现。它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。我们来看看事件总线的处理流程:了解了事件总线的基本概念和处理流程,下面我们就来分析下如何去实现事件总线。2.回归本质在动手实现事件总线之前,我们还是要追本溯源,探索一下事...

C# 事件委托妙文

委托和事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observ...

C#的事件、委托测试(三)

C#的事件、委托测试(一) http://www.skcircle.com/?id=1853C#的事件、委托测试(二) http://www.skcircle.com/?id=1854C#的事件、委托测试(三) http://www.skcircle.com/?id=1820 来个例题。目标:在列表框选择要监控的线程,点start后开始监控。当这个线程结束了(比如那个记事本程序被我关闭了),...

固高gts400接步进电机

4个轴是25ping的接线端子,定义如下:如果你步进脉冲信号是5v的就这样接4根线就可以,固高卡里面把脉冲模式设置成脉冲+方向即可步进和伺服用法是一样的,只不过步进少了编码器反馈,还有一些其他功能,约等于简化版伺服下图仅供参考,步进品牌不一样接法不一样。--------------------- 作者:hackpig来源:www.skcircle.com版权声明:本文为博主原创文章,转载请附上博文...

VS2015中C#6的新特性

由于勇哥工作使用的是VS2015 C#,所以查了一下它的新特性。一、简介VS2015内置的C#版本为6.0,该版本提供了一些新的语法糖,这里仅列出个人感觉比较有用的几个新功能。二、几个很有用的新特性注意:这些新特性只能用于VS2015及更高版本,无法在VS2013、VS2010等低版本中使用。当然,如果你不喜欢这些新的特性,仍然可以继续使用原来的用法(所以说它是新的语法糖)。1、自动属性初始化的改...

C#.NET中的上下文

在开始了解上下文之前,先来复习下.NET的应用程序的逻辑结构。通常情况下,一个进程只能运行一个应用程序。但在.NET环境下,一个进程可以运行多个应用程序,而这里的应用程序则以应用程序域划分,同一个应用程序或者程序集可以加载到同一进程的不同应用程序域中去。上图中没有标识出的是线程,线程和应用程序域并不是简单的一对一,或者一对多的关系。在一个应用程序域中可以有几个线程存在,而一个线程也可以跨多个应用程...

C#4.0的并行库TPL,即Task(五)

C#4.0的并行库TPL,即Task(一)http://www.skcircle.com/?id=1793C#4.0的并行库TPL,即Task(二) http://www.skcircle.com/?id=1798C#4.0的并行库TPL,即Task(三) http://www.skcircle.com/?id=1808C#4.0的并行库TPL,即Task(四) http://www.skcir...

C#4.0的并行库TPL,即Task(四)

C#4.0的并行库TPL,即Task(一)http://www.skcircle.com/?id=1793C#4.0的并行库TPL,即Task(二) http://www.skcircle.com/?id=1798C#4.0的并行库TPL,即Task(三) http://www.skcircle.com/?id=1808C#4.0的并行库TPL,即Task(四) http://www.skcir...

Task暂停、继续、结束

Task实现暂停、继续、结束。看到这个,有些童鞋可能会想到自动化设备上的“停止”,“开始”按钮。勇哥要说的是,Task的暂停继续只是对于task的调度流程来说的,至于task内部跑的轴的运动逻辑来说,你还得有另外的办法让它同步暂停继续。所以整机控制功能并不是靠线程的挂起与继续就那么容易实现的。代码:几点说明。你可以在return那里下断点,程序最后会取消task的执行,就断在这里了。因为这个是异步...

C# CancellationTokenSource.Token 取消Task后,不能再次运行Task

全网的教程都是教你怎么用CancellationTokenSource.Token取消Task,就是不告诉你取消Task后,再次运行Task, 仍然是取消状态,Task跑不起来。而且你想找下Token有没有复位的方法,结果是没发现。其实,每次使用CancellationTokenSource.Token时都要new一个新的!勇哥实测是可以的,就这么简单!真不知道微软是怎么设计的?!--------...

使用Task.Factory.StartNew传递方法参数遇到的问题

用下面的代码,会发生一个错误。报的错误是FlowItemListP[i]的索引超范围,FlowItemListP.Count的值是3, 但是FlowItemListP[i]居然索引值是3打死都想不到i怎么可能计数到3 for (int i = 0; i < FlowItemListP.Count; i++) { if (FlowItemListP[i].RunModeF ==...

C#的WaitHandle : 管理多线程状态

有时候,我们创建了多线程,需要知道是否都完成了各自的工作。比如说,开启了多线程的下载,如何终止所有的线程并且在确保所有线程都终止之后才继续执行程序的退出呢?public partial class MainWindow : Window { public MainWindow() { InitializeComponent()...

C# ManualResetEvent 类的用法

先说是一下 ManualResetEvent 是一线程用来控制别一个线程的信号。大家可以把它看成 操作系统原理中说到的pv操作如下图所说是 ManualResetEvent 对象起一个信使的作用。ManualResetEvent 对象的两个控制方法。1、this.manualEvent.Reset(); //将事件状态设置为非终止状态,导致线程阻止。2、this.manualEvent.Set()...

MSDN中关于async/await异步编程的说明

先上一段代码,msdn中举得一个例子,勇哥将其改造了一下,如下:using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace ConsoleAppl...

C#4.0的并行库TPL,即Task(三)

C#4.0的并行库TPL,即Task(一)http://www.skcircle.com/?id=1793C#4.0的并行库TPL,即Task(二) http://www.skcircle.com/?id=1798C#4.0的并行库TPL,即Task(三) http://www.skcircle.com/?id=1808C#4.0的并行库TPL,即Task(四) http://www.skcir...

C# .net1.0的异步编程模式APM,net2.0的异步编程模式EAP,net4.0的TPL与TAP模式

.net1.0的异步编程模式APM 缺点是无法取消,也不知道其状态.net2.0的异步编程模式EAP 它是使用事件对APM进行了封装,可以取消和知道执行状态.net4.0 async/await 和TPL 已经成为语言关键字支持.net4.0 TAP 基于任务的异步模式TAP(Task-based Asynchronous Pattern )前三者的的一点重要区别:使用async...

欧姆龙cp1h网络模块CP1W-CIF41无法连接plc编程

现象是这个网络模块已经可以ping通了,但是使用CX-Programmer的下面的连接工具,都无法连接。这里勇哥已经确认网络模块已经设置正确,跳线没问题。很无语。今天再试下,尝试新建工程,选择正确plc型号。网络必须选择Ethernet,如果你选择那个FINS/TCP,则连接不上。设置好网络模块的ip地址和端口号。这个时候选择“在线工作”成功了,你发现已经连接上plc了,现在是“运动模式”!现在你...

理解C#中的ConfigureAwait

原文:https://devblogs.microsoft.com/dotnet/configureawait-faq/作者:Stephen翻译:xiaoxiaotank静下心来,你一定会有收获。七年前(原文发布于2019年).NET的编程语言和框架库添加了async/await语法糖。自那以后,它犹如星火燎原一般,不仅遍及整个.NET生态,还被许许多多的其他语言和框架所借鉴。当然,.NET也有很...

c#同步上下文SynchronizationContext的作用(二)

接上篇 上篇勇哥写的演示程序中关于SynchronizationContext的post方法的示例,并没有实际意义。再来一个实例:程序三个按钮,我们想按下按钮后访问网页,把其内容赋值给按钮的Text属性第一按钮借助TaskScheduler的方法FromCurrentSynchronizationContext该方法会创建一个SynchronizationContextTaskScheduler实...

c#同步上下文SynchronizationContext的作用(一)

同步上下文的作用,官方解释是:提供在各种同步模型中传播同步上下文的基本功能。同步上下文的工作就是确保调用在正确的线程上执行。官方解释抽象难以理解,摘抄了网上了其它的解释如下:在99.9%的使用场景中,SynchronizationContext仅仅被当作一个提供虚(virtual)Post方法的类, 该方法可以接收一个委托,然后异步执行它。虽 然SynchronizationContext还有...

Async和Await如何简化异步编程

引言C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作,下面就具体看看编译器到底在背后帮我们做了哪些复杂的工作的。同步代码存在的问题对于同步的代码,大家肯定都不陌生,因为我们平常写的代码大部分都是同步的,然而同步代码却存在一个很严重的问题,例如我们向一个Web服务器发出一个请求时,如果我们发出请求的代码是同步实现的话,这时候我...

C#异步async/await在WinForm中的使用

WinForm窗体中应用异步WinForm虽然比较老,但是现在还有很多的实际生产项目再用,而且微软在新的.Net core 框架中重新重构了WinForm和WPF,就证明WinForm还是有很大的市场的,微软并没有放弃这项技术,并且将它开源了出来,推陈出新,意义可想而知。以前的WinForm项目大多数是用基础的多线程技术来实现的,或者用线程池将事件扔到并发队列中去异步执行,很少有用async/aw...

C#中CancellationToken和CancellationTokenSource用法

之前做开发时,一直没注意这个东西,做了.net core之后,发现CancellationToken用的越来越平凡了。  这也难怪,原来.net framework使用异步的不是很多,而.net core首推异步编程,到处可以看到Task的影子,而CancellationToken正好是异步Task的一个控制器!所以花点时间做个笔记    CancellationToken  Cancellati...

C#4.0的并行库TPL,即Task(二)

C#4.0的并行库TPL,即Task(一)http://www.skcircle.com/?id=1793C#4.0的并行库TPL,即Task(二) http://www.skcircle.com/?id=1798C#4.0的并行库TPL,即Task(三) http://www.skcircle.com/?id=1808C#4.0的并行库TPL,即Task(四) http://www.skcir...

运动控制卡中的脉冲输出方式分为CW/CCW输出和脉冲加方向输出,这两种方式的具体区别,何时该用何种方式.

这两个信号是接电机驱动器用的,CW/CCW是双脉冲工作方式,两根线都输出脉冲信号,CW为正转脉冲信号,CCW为反转脉冲信号,通常都是差分方式输出,两信号相位差90度,根据相位超前或滞后来决定旋转方向.脉冲数决定电机转动角度.而方向/脉冲信号是单脉冲的,脉冲信号发出脉冲决定电机转动角度,方向信号就是电平信号,比如,想正转加高电平,想反转加低电平.在电机朝一个方向转动时,此信号保持原有电平不需要改变....

雷塞DMC2210在x64系统下点动停不下来问题的解决

具体现象是d2210_t_pmove,运动50个脉冲,结果直接走到撞机。相同的程序,在32位的系统下没有问题,但是在x64系统下面有问题。以前勇哥找过雷塞的人过来看过,当时研究了一天,发现是要把某个硬件信号电平禁用一下。今天测试设备再现这个问题,一时想不起来究竟是哪个硬件信号。所以写了个小程序排查研究一下。结果见最后面。using Samsun.Domain.MotionCard.Common.D...

C# 利用dt.Compute计算表达式的值

代码的功能是计算表达式。比如true and false and true使用的是dataset里面的dt.Compute函数。也是在网上看到还有这种用法。这样计算表达式的值就不用自己写算法了。using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usi...

C#中IDisposable的用法

在Net中,由GC垃圾回收线程掌握对象资源的释放,程序员无法掌控析构函数的调用时机。对于一些非托管资源,比如数据库链接对象等,需要实现IDisposable接口进行手动的垃圾回收。那么什么时候使用Idisposable接口,以及如何使用呢? 一、IDisposable的接口定义如下 public interface IDisposable{ // Summary: // Per...
会员中心
搜索
«    2025年8月    »
123
45678910
11121314151617
18192021222324
25262728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864