摘要: using (var bg = new BackgroundWorker()){ bg.DoWork += delegate { System.Threading.Thread.Sleep(5000); }; // 启用一个线程等待 5 秒 bg.RunWorkerCompleted += delegate { MessageBox.Show("Hello!"); }; // 线程执行完成后会执行 RunWorkerCompleted 事伯的代码块 bg.RunWorkerAsync();} 阅读全文
posted @ 2012-08-22 18:45 Medeor 阅读(378) 评论(0) 推荐(1) 编辑
摘要: 转自fresh1985这段时间一直在学习C#,看了书然后又在网上看了N多大神些的blog,然后自己学着做了一个像QQ托盘图标那样的小功能的Demo:(1)、在窗口上点击关闭按钮或者最小化时将托盘显示; (2)、双击托盘图标显示窗口;(3)、右键点击托盘图标提供三个菜单选项,“退出”、“隐藏”、“显示”; (4)、程序可以设置开机启动,隐藏任务栏显示。就这四个小功能。1、建一个WinForm程序—TestIconForm,将其属性ShowInTaskbar改为false,这样程序将不会在任务栏中显示;将 MaximizeBox属性设置为false,屏蔽掉最大化按钮;把StartPosition属 阅读全文
posted @ 2012-08-22 18:24 Medeor 阅读(2939) 评论(0) 推荐(0) 编辑
摘要: 摘自其他人博客,自己试过确实解决问题。(如在自己定义的线程里面给textbox赋值)由于Windows窗体控件本质上不是线程安全的。因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的bug,包括争用和死锁的情况。所以VS2005这一改动便可以增强 线程安全性。我想大家更关心的是如何解决这个问题,如何才能操作其它线程中的控件而不引发异常,接下来我们就来探讨下这个问题:第一种方法:这种方法我没用过,因为大家推荐不要使用,所以我没去实验过,具体方法如下(摘自网上):设置System.Windows.Forms.Co 阅读全文
posted @ 2012-08-22 00:07 Medeor 阅读(10341) 评论(0) 推荐(1) 编辑