摘要: 摘自其他人博客,自己试过确实解决问题。(如在自己定义的线程里面给textbox赋值)由于Windows窗体控件本质上不是线程安全的。因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的bug,包括争用和死锁的情况。所以VS2005这一改动便可以增强线程安全性。我想大家更关心的是如何解决这个问题,如何才能操作其它线程中的控件而不引发异常,接下来我们就来探讨下这个问题:第一种方法:这种方法我没用过,因为大家推荐不要使用,所以我没去实验过,具体方法如下(摘自网上):设置System.Windows.Forms.Con 阅读全文
posted @ 2011-12-31 15:28 大佛张 阅读(2265) 评论(0) 推荐(0) 编辑
摘要: 一、在控制台下使用委托和事件我们都知道,C#中有“接口”这个概念,所谓的“接口”就是定义一套标准,然后由实现类来具体实现其中的方法,所以说“接口,是一组类的抽象”。同样道理,我们可以将“委托”理解为“方法的抽象”,也就是说定义一个方法的模板,至于这个方法具体是怎么样的,就由方法自己去实现。我们知道接口的最大好处就是可以实现多态,同理,“委托”是可以实现方法的多态,当我们想调用某个具体方法的时候,我们不直接调用这个方法,而是去调用这个委托。当然,我们必须在具体方法和委托之间建立某种关联。下面我们来看例子。首先,我们定义一个委托:public delegate void SaySomething( 阅读全文
posted @ 2011-12-31 09:54 大佛张 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 1using System;2using System.Threading;34namespace ifan5{6 //自定义委托声明7publicdelegatevoid childExitDelegate(object sender, ChildExitEventArgs e);89 publicclass TDelegate10 {11 //自定义的事件,实际上就是上面那个委托类型的实例12publicstaticevent childExitDelegate onChildThreadExit;1314 privatestaticvoid Main()15 {16 //订阅事件,就是说 阅读全文
posted @ 2011-12-31 09:39 大佛张 阅读(953) 评论(0) 推荐(0) 编辑