无法在MVVM Light Xamarin Forms中等待Void

时间:2017-09-28 11:13:06

标签: c# asynchronous xamarin mvvm mvvm-light

我尝试使用mvvmlight作为我的mvvm模型但有一些错误我不明白。它说无法使用等待无法使用。如果无法使用等待,那么我在这里应该做的是我的代码:

async void OnLoginButtonClicked(object sender)
{
    try
    {
        var result = await App.AuthenticationClient.AcquireTokenAsync(
            Constants.Scopes,
            string.Empty,
            UiOptions.SelectAccount,
            string.Empty,
            null,
            Constants.Authority,
            Constants.SignUpSignInPolicy);
        await _navigationservice.NavigateTo(Locator.MainPageViewModel);
    }
    catch (MsalException ex)
    {
        if (ex.Message != null && ex.Message.Contains("AADB2C90118"))
        {
            await OnForgotPassword();
        }
        if (ex.ErrorCode != "authentication_canceled")
        {
            //  await DisplayAlert("An error has occurred", "Exception message: " + ex.Message, "Dismiss");
        }
    }
}

,错误在await _navigationservice.NavigateTo(Locator.MainPageViewModel); 它会显示错误消息Cannot await 'void'我应该在这做什么?

1 个答案:

答案 0 :(得分:0)

将void返回方法放在Task.Run()中并等待它。 在这里你找到更好的解释。 Do you have to put Task.Run in a method to make it async?

你可以这样实现。

theUrl<- paste('insert url here') 
theactualUrl <- theUrl
webpage <- read_html(theactualUrl) 
stuff_data_html <-    html_nodes(webpage, 'h2') 
stuff_data<- html_text(newslines)    
stuff_data