摘要: 单元模式和Windows Forms单元是多线程的逻辑上的“容器”,单元产生两种容量——“单的”和“多的”。单线 程单元只包含一个线程;多线程单元可以包含任 何数量的线程。单线程模式更普遍 并且能与两者有互操作性。 就像包含线程一样,单元也包含对象,当对象在一个单元内被创建后,在它的生 命周期中它将一直存在在那,永远也“居家不 出”地与那些驻留线程在一起。在排它锁的控制中,任何线程可以访问在任何同步环境中的对象。但是单元内的对象只有单元内的线程才可以访问。想象一个图书馆,每本书都象征着一个对象;借出书是不被允许的,书都在图书馆 创建并直到它寿终正寝。此外,我们用一个 人来象征一个线程。一个同步 阅读全文
posted @ 2013-05-18 17:04 jingjunfeng 阅读(6585) 评论(0) 推荐(0) 编辑
摘要: 一、同步要领1.阻止 (Blocking)当一个简易阻止方法、锁系统、信号系统等方式处于等待或暂停的状态,被称为被阻止。一旦被阻止,线程立刻放弃它被分配的CPU时间,将 它的ThreadState属性添加为WaitSleepJoin状态,不在安排时间直到停止阻止。停止阻止在任意四种情况下发生(关掉电 脑的电源可不算!): 阻止的条件已得到满足 操作超时(如果timeout被指定了) 通过Thread.Interrupt中断了 通过Thread.Abort放弃了当线程通过(不建议)Suspend 方法暂停,不认为是被阻止了。2.休眠 和 轮询调用Thread.Sleep阻止当前的线程指定的时间( 阅读全文
posted @ 2013-05-18 12:14 jingjunfeng 阅读(12039) 评论(0) 推荐(2) 编辑
摘要: 一、概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行。一个C#程序开始于一个单线程,这个单线程(也称为“主线程”)是被CLR和操作系统自动创建的,能够通过添加额外的线程创建多线程。 下面是个简单的例子:class Program01 { static void Main() { Thread t = new Thread(WriteY); t.Start(); while (true) Console.Write("x"); } ... 阅读全文
posted @ 2013-05-18 11:11 jingjunfeng 阅读(15349) 评论(0) 推荐(0) 编辑
摘要: 在.net平台下,应用程序和线程之间不是一一对应的。 在任何时间,一个应用程序域内都可能有多个线程。 而且,一个特定的线程在它的生命周期内并不一定被限定在一个应用程序域中。windows线程调度程序和CLR会根据需要让线程能够自由地跨越应用程序域的边界,但是在任何一个时间点上,一个线程只能运行在一个应用程序域中(也即是说,一个线程同时在多个应用程序域上执行任务是不可能的).net 4 TPL(Task Parllel Library 任务并行库),能用最小的代价比较省心地创建额外的线程。19.7 以编程方式创建次线程步骤 1.创建一个方法作为新线程的入口点 2.创建一个Parameterize 阅读全文
posted @ 2013-05-18 10:47 jingjunfeng 阅读(525) 评论(0) 推荐(0) 编辑
摘要: 进程简单说就是一个运行的程序,是一个操作系统级别的概念,用来描述一组资源和程序运行所必需的内存分配。一个进程的失败不会影响到其他的进程。线程是进程中的基本执行单元。进程的入口点创建的第一个线程被称为主线程。 我们可以创建工作者线程来执行强度大的工作,主线程仍然对用户的输入保持响应。这使得整个进程具有更强的性能。但是,如果单个进程中的线程过多的话,性能反而会下降,因为CPU需要花费不少时间在这些活动的线程之间来回切换。单CPU的计算机并没有能力在同一时间运行多个线程。在一个单位时间(一个时间片)内,单CPU只能根据线程的优先级执行一个线程。当一个线程的时间片用完的时候,它会被挂起,以便执行其他线 阅读全文
posted @ 2013-05-18 10:35 jingjunfeng 阅读(573) 评论(0) 推荐(0) 编辑
摘要: 以下内容主要来自《程序员修炼之道——从小工到专家》1.关心你的技艺 如果你不在乎能否漂亮地开发出软件,你又为何要耗费生命去开发软件呢?2.思考!你的工作 关掉自动驾驶仪,接管操作。不断批评和评估你的工作。3.提供各种选择,不要找蹩脚的借口 要提供各种选择,而不是找借口。不要说事情做不到,说明能做什么。4.不要容忍破窗户 当你看到糟糕的设计、错误的决策和糟糕的代码时,修正它们。5.做变化的催化剂 你不能强迫人们改变。相反,要向他们展示未来可能会怎样,并帮助他们参与对未来的创造。6.记住大图景 不要太过专注于细节,一致忘了查看你周围正在发生什么。7.使质量成为需求问题 让你的用户参与确定项目真正的 阅读全文
posted @ 2012-10-22 00:44 jingjunfeng 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 一.简要介绍 :概念引入、历史渊源、技术更替、核心框架、功能介绍。 可以参考圣殿骑士文章:http://www.cnblogs.com/KnightsWarrior/archive/2010/10/28/1863249.html二.应用场景:所解决的问题,具体在什么情况下可以使用这些技术。三.开发工具和其他帮助工具。四.成功案例:其它公司使用的成功案例。五.自己编写Demo。 阅读全文
posted @ 2012-10-13 10:40 jingjunfeng 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 今天晚上在公司的培训课上,同事提到了以后在测试人员未到位之前:开发人员需要自己写测试用例的想法。对此我做了一下的思考:开发人员自己写测试用例会有很多的盲区,同时和自己写的单元测试会有重叠。我们可以利用晨会时间,让大家明白自己做什么事情的同时也清楚自己组内的成员都在忙活什么事情。这样可以为以后一个人开发,多个人测试做写铺垫。同时让大家都思考下,自己和别人工作会不会有交集;到了需要测试的时候,组内的人员都抽出10-20分钟帮忙测试,顺便看看要测试的功能是不是与自己最近做的功能或者具体的逻辑有冲突;同时也可以让需求方充当用户,做些功能测试。这样总比同一个人开发,同一个人写测试用例有效的多... 阅读全文
posted @ 2012-09-11 23:51 jingjunfeng 阅读(240) 评论(0) 推荐(0) 编辑
摘要: TabControl 切换 内嵌页面直接滚动事件背景:系统是个winfrom应用程序,程序只有一个主界面。界面中一个TabControl,每个TabPage其实是一个WebBrowser。存在的问题:TabControl选择项切换时,每次都要在页面上点击下,才能滚动。修复后的效果:不点击直接可以用鼠标滚动页面。思考经过:我首先想到是在页面上获取首个元素,直接激活或者设置焦点。结果没有反映。之后我想模拟下点击事件,使用InvokeMember实现body的点击事件后,发现时灵时不灵。最终在尝试性的设置body焦点竟然成功了!现在将代码记录如下:1privatevoidtabMain_Select 阅读全文
posted @ 2012-09-08 19:26 jingjunfeng 阅读(1028) 评论(0) 推荐(0) 编辑
摘要: 1. jQuery所支持的基本CSS选择器 选择器 描述 * 匹配任何元素 E 匹配标签名称为E的所有元素 E F 匹配标签名称为F、作为E的后代节点的所有元素 E>F 匹配标签名称为F、作为E的直接子节点的所有元素 E+F 匹配前面是临近兄弟节点E的所有元素F(E和F紧挨着) E-F 匹配前面是任何兄弟节点E的所... 阅读全文
posted @ 2012-06-27 23:57 jingjunfeng 阅读(494) 评论(0) 推荐(0) 编辑