繁体   English   中英

后台工作者正在更新UI线程中的模型而没有问题

[英]Background worker is updating model in UI thread without issue

我正在使用BackgroundWorker并且我已经实现了ProgressChanged方法,它允许我将e.UserState传递给我的UI,这可以正常工作。

作为一个实验,我改变了我的DoWork方法,以便在绑定到UI ListView(这是一个Observable Collection)的相同模型上工作。

当我这样做时UI会更新,并且我想知道为什么它经过多次测试后能够完美地完成它?

我回到使用e.UserState对象但我想知道它是否是正常的行为&是什么潜在的问题?

您当然可以毫无困难地从后台线程更改模型的属性; 绑定引擎将确定需要对UI元素进行哪些更改并在调度程序线程上调用它们。 这是正常现象,不会导致问题。

你不能(也永远不能)做的是直接从同一个后台线程更改UI元素的属性。


¹这一直是可能的,事实上它不可能是任何其他方式。 考虑一些代码(例如模型)需要更改另一个模型上的属性。 这段代码肯定不知道该属性已被绑定到任何控件,更不用说那个控件了。 因此,每次将属性更改编组到适当的UI线程不仅不方便而且非常困难。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM