摘要: this.BeginInvoke(() => { this.btnQuery.Enabled = false; //禁用查询 });跨线程调用时,编译上面的代码将提示 对于Control.Invoke()来说,任何的代理类型都是可接受的,也就是说ThreadStart和MethodInvoker都是可以接受的类型。这样编译器反而不知道应该用哪个代理去匹配匿名函数了,导致了编译错误的... 阅读全文
posted @ 2014-01-15 20:53 code_flyer 阅读(7734) 评论(0) 推荐(1) 编辑
摘要: 1.菜单栏: 工具》选项》调试》将所有输出窗口文本重定向到即时窗口 2.使用Console.WriteLine或Write添加调试信息 3.按F5启动调试程序 4.调出输出窗口查看调试信息 调试》窗口》选择输出 阅读全文
posted @ 2014-01-15 18:16 code_flyer 阅读(4893) 评论(0) 推荐(0) 编辑
摘要: 原文:http://hi.baidu.com/liuzumou/item/4571f5ca098bec1250505855 System.Threading.Timer 是一个使用回调方法的计时器,而且由线程池线程服务,简单且对资源要求不高。"只要在使用 Timer,就必须保留对它的引用。"对于任何托管对象,如果没有对 Timer 的引用,计时器会被垃圾回收。即使 Timer 仍处在活动状态,也会... 阅读全文
posted @ 2014-01-15 18:10 code_flyer 阅读(250) 评论(0) 推荐(0) 编辑
摘要: MethodInvoker 提供一个简单委托,该委托用于调用含 void 参数列表的方法。 在对控件的 Invoke 方法进行调用时或需要一个简单委托又不想自己定义时可以使用该委托。 下面的代码示例演示如何使用 MethodInvoker 以调用更新应用程序窗体的标题栏的方法。 public partial class Form1 : Form{ private System.Threadin... 阅读全文
posted @ 2014-01-15 18:01 code_flyer 阅读(583) 评论(0) 推荐(0) 编辑
摘要: 原文:http://www.cnblogs.com/cm8448940/archive/2008/07/10/1240045.html 使用到两个控件,一个按钮button1,一个标签label1。 private void button1_Click(object sender, EventArgs e) { // 创建一个新线程。 Thread thread = new Threa... 阅读全文
posted @ 2014-01-15 15:41 code_flyer 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 原文:http://www.cnblogs.com/mashang/archive/2009/08/01/1536730.html Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托。 Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托。 (一)Control的Invoke和... 阅读全文
posted @ 2014-01-15 15:27 code_flyer 阅读(266) 评论(0) 推荐(0) 编辑
摘要: Control.InvokeRequired 获取一个值,该值指示调用方在对控件进行方法调用时是否必须调用 Invoke 方法,因为调用方位于创建控件所在的线程以外的线程中。 InvokeRequired 当前线程不是创建控件的线程时为true。比如你可以自己开一个Thread,或使用Timer的事件来访问窗体上的控件的时候,在线程中窗体的这个属性就是True的。 简单的说,如果有两个线程,Thr... 阅读全文
posted @ 2014-01-15 14:50 code_flyer 阅读(1421) 评论(0) 推荐(0) 编辑