如何回归“无效”的方式?

时间:2015-07-11 04:46:59

标签: c# wpf win-universal-app

我在Windows Phone 8.1上使用

try
{
    var Url = "https://...../oauth/authorize?client_id=" + Uri.EscapeDataString("4a3e...") + "&response_type=code&redirect_uri=" + Uri.EscapeDataString("http://localhost:8888/callback") + "&show_dialog=true";
    var StartUri = new Uri(Url);
    var EndUri = new Uri("http://localhost:8888/callback");

    WebAuthenticationBroker.AuthenticateAndContinue(StartUri, EndUri,null, WebAuthenticationOptions.None);
}
catch (Exception Error)
{
    //
    // Bad Parameter, SSL/TLS Errors and Network Unavailable errors are to be handled here.
    //
    var dialog = new MessageDialog(Error.Message);
    await dialog.ShowAsync();
}

因为WebAuthenticationBroker.AuthenticateAndContinue void是这样的 我不能把var t=WebAuthenticationBroker.AuthenticateAndContinue放在

我只想返回以下代码

public async void ContinueWebAuthentication(WebAuthenticationBrokerContinuationEventArgs args)
{
    WebAuthenticationResult result = args.WebAuthenticationResult;

    if (result.ResponseStatus == WebAuthenticationStatus.Success)
    {
        //OutputToken(result.ResponseData.ToString());
        await GetUserNameAsync(result.ResponseData.ToString());
    }
    else if (result.ResponseStatus == WebAuthenticationStatus.ErrorHttp)
    {
        throw new Exception("HTTP Error returned by AuthenticateAsync() : " + result.ResponseErrorDetail.ToString());
    }
    else
    {
        throw new Exception("Error returned by AuthenticateAsync() : " + result.ResponseErrorDetail.ToString());
    }
}

2 个答案:

答案 0 :(得分:1)

虚空不是"类型"它只是意味着该方法没有返回值。您不需要返回声明。

答案 1 :(得分:1)

由于在异步方法中返回void不是很好的做法:

https://msdn.microsoft.com/en-us/magazine/jj991977.aspx

  

Async void方法具有不同的错误处理语义。当异步任务或异步任务方法抛出异常时,将捕获该异常并将其放在Task对象上。使用async void方法,没有Task对象,因此异步void方法抛出的任何异常都将直接在异步void方法启动时处于活动状态的SynchronizationContext上引发

你应该简单地用任务

替换void
public async Task ContinueWebAuthentication(