线程问题,请高手指点...

zxl1102003 2008-02-14 04:48:47
在用多线程是,当从一个线程修改另外一个线程中创建的控件时,在编译时报异常,但生成的可执行文件可以正确运行,请高手指点一下(说明:没有采用异步调用)
...全文
92 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lake_cx 2008-02-18
  • 打赏
  • 举报
回复
操作界面的代码封装在一个函数中,使用UI线程的SynchronizationContext对象进行Post调用
lnwuyaowei 2008-02-17
  • 打赏
  • 举报
回复
并不能保证永远会正常运行。微软对此有说明:如果是2003,可能会编译通过,但2005,可能就不会让你编译通过,当然编译器并不能总是对线程调用进行正确的检查,所以能运行,也不代表没有问题。
peterb 2008-02-17
  • 打赏
  • 举报
回复
采用异步调用
zxl1102003 2008-02-17
  • 打赏
  • 举报
回复
楼上的说的方法,我也知道,但它只是不捕获线程的出错信息,不是太安全,有没有安全一点的办法...
期待...
effun 2008-02-17
  • 打赏
  • 举报
回复
那就改用BackgroundWorker组件试试吧。
effun 2008-02-17
  • 打赏
  • 举报
回复
对控件的操作最好在创建控件的线程中进行,也可以在其它线程中调用控件的Invoke方法来修改控件。
这个限制是在.net2.0中引入的,但可以通过Control.CheckForIllegalCrossThreadCalls 属性来禁用这个限制。
还有一点不明白,既然在编译时报了错,那程序怎么能编译成功呢?除非是警告吧。最好把错误的内容帖出来。

111,116

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧