当用backgroundworker操作com的时候遇到的问题

losedxyz 2008-02-29 02:57:42
大家有没有遇到过backgroundworker操作com类,会很混乱?

比如backgroundWorker1_ProgressChanged的事件里我用到了很多com的变量和方法,这样的话UI会很紊乱,调试看,执行的路径与一般的路径不太一样.居然是先处理了worker_RunWorkerCompleted,然后继续处理ProgressChanged

怎么回事啊.
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
genlinux 2008-02-29
  • 打赏
  • 举报
回复
感觉不是Threading的问题, 问题是你如何的在多线程里调用COM.
查询lock/mutex
冷月孤峰 2008-02-29
  • 打赏
  • 举报
回复
多线程操作COM是有问题,不稳定!
lextm 2008-02-29
  • 打赏
  • 举报
回复
ProgressChanged和RunCompleted重叠是可能的。这个和你自己使用BW的方式有关。

因为ProgressChanged是在界面主线程中执行的,所以在它执行的时候,BW的OnWork线程还在继续执行,甚至完成工作后进入RunCompleted事件。

你的情况就是如此,因为断点调试,使得ProgressChanged事件挂起,但是后面的OnWork继续执行,以至于Completed事件也出来了。而不在调试模式下也会出这样的问题,就是ProgressChanged事件中处理函数执行了很多低速的命令——读写COM,读写文件,那么同样会出现Completed事件出来的情况。

110,536

社区成员

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

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

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