此代码未显示DisplayAlert
public MainPage()
{
InitializeComponent();
DisplayAlert("Hey", "Welcome", "OK");
}
但是当我使用Device.BeginInvokeOnMainThread
警报时会显示出来
public MainPage()
{
InitializeComponent();
Device.BeginInvokeOnMainThread(() => {
DisplayAlert("Hey ", "Welcome", "OK");
});
}
这是仅在DisplayAlert
或其他控件中发生的。谁能告诉我为什么会这样?
当调用构造函数时,它的原因非常简单,它与UIThread
位于不同的线程上。现在,UI线程实际上是UI上的所有更改。
注意
一个应用程序可以有n个不同的线程但只有一个UI线程
所以当你这样做时:
public MainPage()
{
InitializeComponent();
DisplayAlert("Hey", "Welcome", "OK");
}
它发生的是它在构造函数的线程(而不是UIThread)上运行,因此它被执行但从未在UI上显示,相反,当你这样做时:
public MainPage()
{
InitializeComponent();
Device.BeginInvokeOnMainThread(() => {
DisplayAlert("Hey ", "Welcome", "OK");
});
}
BeginInvokeOnMainThread方法强制您的显示警报方法在UI线程上运行,使其在UIThread上可见。
我希望你有意义,
如果你什么都不懂,请随意回复。
祝好运
UI操作必须在主UI线程上进行。 BeginInvokeOnMainThread
强制在UI线程上发生后台线程上的操作