为了账号安全,请及时绑定邮箱和手机立即绑定

在 Xamarin.Forms 的每个页面上执行相同的功能

在 Xamarin.Forms 的每个页面上执行相同的功能

C#
陪伴而非守候 2021-10-23 16:29:10
在用户请求完成之前,我需要在出现的每个页面上或以某种方式执行一些检查(例如:CheckForUpdate、CheckNetworkConnection、CheckUserAuthorization 等)。所以我创建了 ac# 类并将其命名为BasePage.cs:public static class BasePage{    public static async void CheckForUpdate()    {        // actual codes to check for updates are not included here        // just a sample alert        await App.Current.MainPage.DisplayAlert("Update", "There is a new version avaiable to update, would you like to download?", "Download", "Skip");    }}并在我的页面中使用它,如下所示:LoginPage.cs[XamlCompilation(XamlCompilationOptions.Compile)]public partial class LoginPage : ContentPage{    public LoginPage()    {        InitializeComponent();    }    protected async override void OnAppearing()    {        await Task.Run(() => BasePage.CheckForUpdate());    }}我不知道这是否是最佳实践(我猜不是),但无论如何它都没有显示警报。所以我的问题是在每个页面上执行函数的最佳方式是什么,为什么上面的代码不起作用。
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

您的代码似乎没有在 UI 线程上运行。只需使用Device.BeginInvokeOnMainThread,尝试如下


protected  override void OnAppearing()

{

    Device.BeginInvokeOnMainThread(() => {

        BaseClass.CheckForUpdate();

    });

}

希望对你有帮助。


查看完整回答
反对 回复 2021-10-23
  • 1 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信