博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年3月9日

摘要: 问题的产生: 我的WinForm程序中有一个用于更新主窗口的工作线程(worker thread),但文档中却提示我不能在多线程中调用这个form(为什么?),而事实上我在调用时程序常常会崩掉。请问如何从多线程中调用form中的方法呢? 解答: 每一个从Control类中派生出来的WinForm类(包括Control类)都是依靠底层Windows消息和一个消息泵循环(message pump loop)来执行的。消息循环都必须有一个相对应的线程,因为发送到一个window的消息实际上只会被发送到创建该window的线程中去。其结果是,即使提供了同步(synchronization),你也无法从 阅读全文

posted @ 2011-03-09 16:03 steve.z 阅读(394) 评论(0) 推荐(0) 编辑

摘要: BeginInvoke 方法真的是新开一个线程进行异步调用吗?参考以下代码:public delegate void treeinvoke();private void UpdateTreeView(){ MessageBox.Show(System.Threading.Thread.CurrentThread.Name);}private void button1_Click(object sender, System.EventArgs e){ System.Threading.Thread.CurrentThread.Name = "UIThread"; treeVi 阅读全文

posted @ 2011-03-09 16:01 steve.z 阅读(364) 评论(2) 推荐(0) 编辑