社区
C#
帖子详情
当用backgroundworker操作com的时候遇到的问题
losedxyz
2008-02-29 02:57:42
大家有没有遇到过backgroundworker操作com类,会很混乱?
比如backgroundWorker1_ProgressChanged的事件里我用到了很多com的变量和方法,这样的话UI会很紊乱,调试看,执行的路径与一般的路径不太一样.居然是先处理了worker_RunWorkerCompleted,然后继续处理ProgressChanged
怎么回事啊.
...全文
70
3
打赏
收藏
当用backgroundworker操作com的时候遇到的问题
大家有没有遇到过backgroundworker操作com类,会很混乱? 比如backgroundWorker1_ProgressChanged的事件里我用到了很多com的变量和方法,这样的话UI会很紊乱,调试看,执行的路径与一般的路径不太一样.居然是先处理了worker_RunWorkerCompleted,然后继续处理ProgressChanged 怎么回事啊.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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事件出来的情况。
C#四种方式实现对用户
操作
响应灵敏及可动态更新的窗体控件及其对比
随机抽奖应用为例 timer,
backGround
Worker
,多线程,委托四种方式的对比: 1.4种方式都可以实现要求 可谓条条大路通罗马 2.多线程和委托需要强行禁用CheckForIllegalCrossThreadCalls,有可能存在运行安全
问题
,但目前还没
遇到
3.timer的源代码最少最简单 其次是多线程 4.委托本质上还是要用到多线程 区别在于委托是通过消息和事件的方式同步协调线程之间的配合 Observer设计模式 5.多线程和委托需要自己处理资源释放 否则程序非正常退出时会仍然驻留内存 6.
backGround
Worker
看来是微软针对此要求度身定做的成熟组件,封装了线程、同步协调及资源释放,又没有运行安全
问题
的担心 7.性能哪个最好?有空导几万条数据再测试啦 4个源代码中
backGround
Worker
的源代码是最完整的 还对既公平又高效的随机抽奖算法进行了一些探讨 详见源代码注释 其他3个源代码只实现基本要求 /* * 如需引用,请注明出处,谢谢! * If you need to quote please specify source, thanks! * * http://blog.csdn.net/johnnyxiao * johnnyxiao@163.
com
* 2012-09-05 */
.NET 4.5 异步IO 相关实例
在C/S架构中,不管是传统的winform还是wpf都可能会
遇到
进行异步
操作
文件的时候。文件小还好说,直接写
操作
代码。 如果是大文件很多时候做成异步的
操作
。在界面上显示一个进度条什么的,后台使用一个
background
worker
来做。在这里告诉大家在.NET Framework4.5中支持异步IO的
操作
。大大简化之前些的异步方法代码。 使用
background
worker
代码 代码如下:View Code private void Button_Click_3(object sender, RoutedEventArgs e) { System.
Com
p
C#
110,536
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章