摘要: 转自:http://www.cnblogs.com/luminji/archive/2010/09/17/1829380.htmlC#笔记21:多线程之线程同步中的锁定lock、Monitor1:什么是锁2:如何选择锁定对象3:如何锁定集合4:Monitor1:什么是锁 lock 语句可以用来确保代码块完成运行,而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。2:如何选择锁定对象 提供给 lock 关键字的参数必须为基于引用类型的对象,该对象用来定义锁的范围。在上面的示例中,锁的范围限定为此函数,因为函数外不存在任何对对象 lockThis 的引用。如果确实存在此类 阅读全文
posted @ 2013-11-04 15:55 SmilelyCoding 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.cnblogs.com/luminji/archive/2011/05/03/2034890.html所谓线程同步,就是多个线程之间在某个对象上执行等待(也可理解为锁定该对象),直到该对象被解除锁定。C#中对象的类型分为引用类型和值类型。CLR在这两种类型上的等待是不一样的。我们可以简单的理解为在CLR中,值类型是不能被锁定的,也即:不能在一个值类型对象上执行等待。而在引用类型上的等待机制,则分为两类:锁定和信号同步。锁定,使用关键字lock和类型Monitor。两者没有实质区别,前者其实是后者的语法糖。这是最常用的同步技术;本建议我们讨论的是信号同步。信号同步机制 阅读全文
posted @ 2013-11-04 15:45 SmilelyCoding 阅读(443) 评论(0) 推荐(0) 编辑
摘要: 转自:http://bbs.csdn.net/topics/360140208这个问题被问到相当多,很多网友都知道用属性,用委托。但是具体怎么做却不清楚。我在网上看到很多文章,虽然提出的方案可行,但是实现的都不好,于是自己动手写了一个例子给大家。希望这个例子足够简单完整。我将标题设定为“最佳实践”,意味着我觉得窗体传值应该有一个统一的,标准的模式给大家套用。我认为我提供的模式比较优雅,但是更优雅的设计是采用MVC。因为那样会大大增加例子的复杂度,不适合新手,没有给出。为了实现这个例子,你需要准备2个窗口,一个叫MainForm,上面至少需要一个richTextBox,两个工具栏按钮。另一个叫M 阅读全文
posted @ 2013-11-04 11:11 SmilelyCoding 阅读(229) 评论(0) 推荐(0) 编辑