我需要知道在App启动时如何在Xamarin Forms中使用async方法? 我需要根据条件显示首页。
public App()
{
InitializeComponent();
if (SaveCredential.IpAddress == string.Empty || SaveCredential.PortNo == string.Empty)
{
MainPage = new NavigationPage(new Dhoni.IpDetail());
}
else if (SaveCredential.IpAddress != string.Empty && SaveCredential.PortNo != string.Empty)
{
if (await LoginPage.ConnectionCheck())
{
if (SaveCredential.UserName != string.Empty && SaveCredential.Password != string.Empty)
{
if (await LoginPage.PasswordCheck(SaveCredential.UserName, SaveCredential.Password))
{
MainPage = new NavigationPage(new Dhoni.Dashboard());
}
else
{
MainPage = new NavigationPage(new Dhoni.LoginPage());
}
}
else if (SaveCredential.UserName == string.Empty || SaveCredential.Password == string.Empty)
{
MainPage = new NavigationPage(new Dhoni.LoginPage());
}
}
else
{
MainPage = new NavigationPage(new Dhoni.IpDetail());
}
}
}
我在这些行中出错
if(等待LoginPage.ConnectionCheck())
if(等待 LoginPage.PasswordCheck(SaveCredential.UserName,SaveCredential.Password))
错误是
等待'运算符只能在异步方法中使用。考虑 使用' async'标记此方法修饰符并改变其回报 输入'任务'。
任何人都可以解决这个问题吗?
答案 0 :(得分:3)
protected async override void OnStart()
{
base.OnStart();
// call your async method here
}
答案 1 :(得分:0)
你不能在ctor中使用async / await,在msdn上读取async / await。
您有两个选项,可以覆盖OnStart
或OnResume
(还有OnSleep
)并将其设置为异步:
protected override async void OnStart() { //await ... }
或者在App.xaml.cs的ctor中设置App.Current.MainPage
,然后等待页面override asnyc void OnAppearing()
中的逻辑。
答案 2 :(得分:0)
如果真的需要这样做(但我建议不要这样做):
YourMethodAsync.GetAwaiter().GetResult();