基础布局网上有的是,不再赘述,在此仅描写一些犄角噶蓝儿,不容易查到,但会遇到的问题:1,假设共3个区域,想让布局显示方式为左侧一个区域,右侧呈上下区域。通过dockpanel.show(参数)逐一show出来,结果却发现可能布局与自己想象的不一致。结果布局可能为上一个区域,左右两个区域的这种布局,图:,解决方案:改变代码show的顺序即可。图:2,点击首页按钮,自动在document区域新增首页。本人的能力有限,这个问题也困惑了我一阵,因为dockpanel的tab页其实是个窗体,如果用Form
一般测量时间间隔使用的是DateTime.Now实例的DateTime.Ticks当前属性,想要精确测量一个操作的运行时间就只能使用Stopwatch类计时了。
Stopwatch计时精度取决于硬件,如果安装的硬件和操作系统支持高分辨率性能计数器, 则Stopwatch类将使用该计数器来测量运行时间。,否则,Stopwatch类将使用系统计时器来测量运行时间。
测量耗时操作的运行时间:
勇哥注:
这个系列是勇哥的小娱乐。这么多年来感觉自己就是工作机器,没有一点属于自己的乐子。
突然想到儿时的小梦想是写个fc的坦克大战。要不,先弄个AI,让它自动玩坦克大战吧。fc的坦克大战是fc模拟器的游戏,要做自动打怪的AI,可以考虑连续窗口截图,然后交由halcon进行处理。处理结果交由策略代码处理,最后发布手柄控制指令。因此,首先先要考虑窗口的连续帧如何实时截取,然后就是如何实现虚拟手柄(或者虚拟键盘按键也可以)。这两点做不到,就玩不下去了。图1 fc游戏:坦克大战勇哥首先试一下截
勇哥注:我们继续上一篇《C# 勇哥关于多线程读写plc内存的研究续,解决lock锁的效率问题》上一篇我们解决了lock锁的效率问题。本节我们继续讨论一下控件读写的效率问题。由下图中,我们看到的RichTextBox.SetText,它占6.44%的效率。本着程序员的工匠精神,我们也要把这部分耗能解决掉。直接说答案:我们在上节代码中,使用了Invoke输出RichTextBox的文本。也就是使用委托来输出控件信息。RtbMsg.Invoke(new Action(() =>
勇哥注:ConcurrentBag是一个线程安全的无序集合。专为生产消费模式进行订制的集合。如果多线程使用List<T>就会遇到问题:System.InvalidOperationException:“集合已修改;可能无法执行枚举操作。”。原因是timer2在遍历list的过程当中,timer1修改了list,使其大小发生了变化。如果使用ConcurrentBag这类安全集合,可以避免这类问题出现。它的常见方法如下:Add &
勇哥注:我们继续上一篇《勇哥关于多线程读写plc内存的研究》在上篇结尾,我们看到lock锁带来的效率问题。本着程序员应有的工匠精神,本节我们来研究并解决这个问题。先回顾一下上篇文章结尾勇哥截的程序效率图。Monitor.Enter的函数占用cpu时间75.85%,此耗能大户就是lock锁。(因为lock关键字实际上是Monitor的语法糖)由于plc读写操作中,读的次数一定远大于写入的次数,因此我们希望的是,无论有多少个线程都可以一起读,只是同一时间只能有一个线程能写。而lock是独占,它区分不
这篇文章向大家介绍了读写锁ReaderWriterLockSlim,其优点就是多个线程可以同时读取该对象,要了解更多读写锁的知识,仔细阅读下文吧读写锁的概念很简单,允许多个线程同时获取读锁,但同一时间只允许一个线程获得写锁,因此也称作共享-独占锁。在C#中,推荐使用ReaderWriterLockSlim类来完成读写锁的功能。某些场合下,对一个对象的读取次数远远大于修改次数,如果只是简单的用lock方式加锁,则会影响读取的效率。而如果采用读写锁,则多个线程可以同时读取该对象,只有等到对象被写入锁
版本要求: netMarketing1.4.0命名空间:netMarketing.Net.SocketLibrary客户端调用示例:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SocketClientTest
{
开源的统计图控件中基本常用的是OpenFlashChar和ZedGraph,今天就先来讲讲ZedGraph的使用。ZedGraph资源ZedGraph来源:http://sourceforge.net/project/showfiles.php?group_id=114675ZedGraph相关例子资源:http://zedgraph.org/wiki/index.php?title=Sample_Graphs ZedGraph的特点:第一,可以先生成图片后再显示,这对一些
单例模式是软件工程学中最富盛名的设计模式之一。从本质上看,单例模式只允许被其自身实例化一次,且向外部提供了一个访问该实例的接口。通常来说,单例对象进行实例化时一般不带参数,因为如果不同的实例化请求传递的参数不同的话会导致问题的产生。(若多个请求都是传递的同样的参数的话,工厂模式更应该被考虑)C#中实现单例有很多种方法,本文将按顺序介绍非线程安全、完全懒汉式、线程安全和低/高性能集中版本。在所有的实现版本中,都有以下几个共同点:唯一的、私有的且无参的构造函数,这样不允许外部类进行实例化;类是密封的