查看: 609|回复: 0

关于WPF多线程的一些坑

[复制链接]

1

技术

4

魅力

2

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
3950
人气
161
分享
46

优秀版主活跃会员

发表于 2021-8-20 17:01:04 | 显示全部楼层 |阅读模式

WPF中,在非主线程上,访问窗体控件是不被允许的。只有把语句放在如下所示的代码里面,才能消除报错


[C#] 纯文本查看 复制代码
this.Dispatcher.Invoke(new Action(delegate

                 {
                   
                 }));


于是乎,我就把Thread类中所有要执行语句都放进这里面来了。

但是,我发现多线程并没有什么用,界面该假死还是假死。

我认为可能是Thread的问题。于是我又尝试了BackgroundWorker

嗯,依旧没什么用。

于是乎我花了几小时查找资料,发现问题出在开头所提到的语句。这块语句原理是将操作委托给主线程,让主线程去操作控件,以避免报错。所以,如果我把所有耗时操作放进这里面,那么多线程等同于摆设。

不偷懒了,我就一个个找到报错的语句,并把这些个别语句放进开头的代码块,果然好了。





论坛邮箱:henry217@x64.site
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表