Owe*_*enP 7 mvvm xamarin.forms
前几天,在代码审查中,我看到了一些关于从工作线程设置属性的安全性的问题.一位同事发表了评论,"此属性绑定到UI,数据绑定是线程安全的."
我一直在使用XF,但总是认为这不是真的:如果我想更新绑定到UI的ViewModel属性,我必须在UI线程上进行这些更改.我只花了几分钟探索文档,除了直接操作BindableProperties具有线程关联性之外,我没有看到明显的答案.如果那是阻止UI线程执行,那对我来说也很重要.
我可以制作一个项目来自己测试,但这些问题似乎总是间歇性的,所以我想知道我只是错过了正确的文档.
(这与调查崩溃有关,我们看到主要发生在Xamarin调用堆栈中.我们从工作线程引发事件,VM处理该事件并更新一些属性.如果这是为UI线程安排的,可能会有我们没有准备好一些交错问题,而且我更接近于解决崩溃问题.如果它没有安排用于UI线程......我很惊讶它的工作时间很长.)
我已经使用 XF 一段时间了,但始终认为这不是真的:如果我想更新绑定到 UI 的 ViewModel 属性,我必须在 UI 线程上进行这些更改。
你说得对。100%正确。您可以用于Device.InvokeOnMainThread()此用途。
为了完整起见,有一种情况并不重要:PropertyChanged
https://github.com/xamarin/Xamarin.Forms/blob/b645064/Xamarin.Forms.Core/BindingExpression.cs#L542
在这种情况下,Binding将应用于主 (UI) 线程。
| 归档时间: |
|
| 查看次数: |
628 次 |
| 最近记录: |