gpt4 book ai didi

c# - 为什么我们需要在应用加载时使用 BeginInvokeOnMainThread 来显示 DisplayAlert

转载 作者:行者123 更新时间:2023-11-30 20:15:23 25 4
gpt4 key购买 nike

此代码未显示 DisplayAlert

public MainPage()
{
InitializeComponent();
DisplayAlert("Hey", "Welcome", "OK");
}

但是当我使用 Device.BeginInvokeOnMainThread 时会显示警报

public MainPage()
{
InitializeComponent();
Device.BeginInvokeOnMainThread(() => {
DisplayAlert("Hey ", "Welcome", "OK");
});
}

这种情况是仅发生在 DisplayAlert 上,还是也发生在其他控件上。谁能告诉我为什么会这样?

最佳答案

原因很简单,当调用构造函数时,调用它的线程与 UIThread 不同,现在 UI 线程是 UI 上所有更改实际发生的地方。

注意

一个应用程序可以有 n 个不同的线程,但只有一个 UIThread

所以当你这样做的时候:

public MainPage()
{
InitializeComponent();
DisplayAlert("Hey", "Welcome", "OK");
}

发生的事情是它在构造函数的线程(而不是 UIThread)上运行,因此它被执行但从未显示在 UI 上,相反,当您这样做时:

public MainPage()
{
InitializeComponent();
Device.BeginInvokeOnMainThread(() => {
DisplayAlert("Hey ", "Welcome", "OK");
});
}

BeginInvokeOnMainThread 方法强制您的显示警报方法在 UI 线程上运行,使其在 UIThread 上可见。

希望对你有所帮助,

如果您不明白任何内容,请随时回复。

祝你好运

关于c# - 为什么我们需要在应用加载时使用 BeginInvokeOnMainThread 来显示 DisplayAlert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54921728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com