勇哥注:事件很常见,但有重复的代码量。如果你想简化一下事件的编程,而且是整个程序只使用一个像事件池一样的东西,可以尝试使用下文讲的ObservableCollection观察者集合来做到。ObservableCollection<T>类表示一个动态数据集合,在添加项,移除项或刷新整个列表时,刺激和将提供通知通知可以由下面的枚举知晓你对集合做了什么才触发的事件。using System;
using System.Collections.Generic;
usi
对一个服务器程序想统计每秒可以处理多少数据包,要如何做?答案是用处理数据包的总数,除以累记处理数据包用的时间。这里要指出的是, 运行一段程序,使用的cpu时间,跟实际运行的时间是不一样的。附例如下:private void ShowRunTime()
{
TimeSpan ts1 =&nb
勇哥注:.Net的Stopwatch类可以精确到1/10000毫秒, 有没有更精确的计时吗?见下面的代码。暂时没试过效果,大家可以试下。计算某个代码片段的执行时间,精确到CPU执行一条指令所用的时间(十亿分之一秒),可用于精确计算某个算法的执行时间。代码:using System;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Threa
正在c#程序优化时,如果多线程效果不佳的情况下,也会使用多进程的方案,如下:System.Threading.Tasks.Task task=System.Threading.Tasks.Task.Factory.StartNew(
&
勇哥注:我在用Task的时候,它处理完毕后,还能检测到它下图的这些状态。于是在想,Task处理完毕后是否需要做清理工作呢?正好今天看到一个博主聊到这个话题。传送门:异步编程系列目录…… 摘要:本博文解释在.NET 4.X中的Task使用完后为什么不应该调用Dispose()。并且说明.NET4.5对.NET4.0的Task对象进行的部分改进:减轻Task对WaitHandle对象的依赖,并且增强在释放了Task后对其成员的可访问性。 我多次获得这样一个问题: &nb
勇哥注:大家好,我是微软的搬运工,今天搬一个忽略的知识点。索引器允许类或结构的实例就像数组一样进行索引。 无需显式指定类型或实例成员,即可设置或检索索引值。 索引器类似于属性,不同之处在于它们的访问器需要使用参数。以下示例定义了一个泛型类,其中包含用于赋值和检索值的简单 get 和 set 访问器方法。 Program 类创建了此类的一个实例,用于存储字符串。using System;
class Sample
勇哥注:这位博主总结了来自于视频的一些学习资料,感谢他的分享,内容是相当经验化的总结。文章很长,有空我会做些排版,先凑合着看吧。#线程详解1. Thread基础之从 WinDbg 角度理解你必须知道的时间和空间上的开销一:空间上的开销1、thread本身来说就是操作系统的概念。。。<1> thread的内核数据结构,其中有osid,context => CPU寄存器的里面的一些变量。 30 ms<2>. thread 环境块 :tls【thread本地存储】, ex
勇哥要做到的目标是:task工厂按添加的顺序依次执行。下面程序我规定的顺序为: A...A...B...B...C...C...从源码一来看,每次执行次序都不同。如果我们把lock那段代码启用,效果如下:可以看到仅保证了两次输出是连续,而不能保证执行顺序跟task工厂add的顺序一样。代码还有一个问题是:myScheduler调度器并没有发挥作用,twork根本执行不到。以上问题的解决版本见后面。问题源码1:using System;
using Sy
这个问题网上的经验大概如下:1。 清空方案,重新编译2。 删除项目bin目录下的东西,重新编译3。 解决相互引用的问题。4。 确保不是run的release5。把项目编译改为x866。 好像没发现其它的了。。。这些解决不了勇哥手上的项目的问题。勇哥的工程有几十个项目。我长话短说,解决方法是:引导项目除了直接用到的项目需要引用外,还需要引用那些无法下断点的项目。这样做的目的是让每次run引导项目时,能自动把最新的dll以及调试文件pdg复制到引导项目的bin目录下。当然你也可以手工把最新的dll以
关于项目引用,有几种:(一)这种是引用系统的程序集(二)下面这种是引用你自己的项目“解决方案”(三)最后一种是浏览本机上的项目的dll。对于工程中有几十个项目的软件来说,虽然使用(二)是很方便。但是会编译速度奇慢,而且随着项目越多越慢。貌似他run之前都会把所有项目都试图更新一下。勇哥宿舍的电脑,实在是不堪重负,逼得不得已,使用(三),速度果然就快多了。当然它的缺点是,你得手工更新改变过的项目。--------------------- 作者:hackpig来源:www.skcircl