我希望有人向我解释什么是 Device.BeginInvokeOnMainThread 以及它的用途是什么?
还有一些使用案例的示例。
只是添加一个例子。
假设你有一个异步方法DoAnyWorkAsync
如果你这样称呼它(仅作为示例):
DoAnyWorkAsync().ContinueWith ((arg) => {
StatusLabel.Text = "Async operation completed...";
});
StatusLabel
是 XAML 中的标签。
一旦异步操作完成,上面的代码将不会在标签中显示消息,因为回调位于与 UI 线程不同的另一个线程中,因此它无法修改 UI。
如果相同的代码你稍微更新一下,只需附上StatusLabel
内的文本更新Device.BeginInvokeOnMainThread
像这样:
DoAnyWorkAsync().ContinueWith ((arg) => {
Device.BeginInvokeOnMainThread (() => {
StatusLabel.Text = "Async operation completed...";
});
});
不会有任何问题。
自己尝试一下,替换DoAnyWorkAsync()
with Task.Delay(2000)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)