我希望有人向我解释什么是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()
替换为Task.Delay(2000)
。
关于multithreading - Device.BeginInvokeOnMainThread的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44121760/