如何在布尔返回方法中调用返回Task<T>的方法

1 c# asynchronous xamarin

public interface IAuthenticationService
{
    Task<TurnaResponse> RegisterUser(User user);

    Task<TurnaResponse> LoginUser(string email, string password);

    Task<TurnaResponse> ResetPassword(string userId, string password);

    Task<TurnaResponse> ForgotPassword(string email);

    Task<TurnaResponse> ProcessSession(string userId);

    bool IsUserAuthenticated();
}

public async Task<TurnaResponse> ProcessSession(string userId)
{
    UriBuilder builder = new UriBuilder(ApiConstants.BaseApiUrl)
    {
        Path = ApiConstants.ProcessSessionEndpoint
    };

    var query = System.Web.HttpUtility.ParseQueryString(builder.Query);
    query["userId"] = userId;
    builder.Query = query.ToString();

    var result = await _genericRepository.GetAsync<TurnaResponse>(builder.ToString(), "");
    result.Data = result.Data != null
        ? JsonConvert.DeserializeObject<User>(result.Data.ToString()) : result.Data;

    _sessionResponse = (TurnaResponse)result;

    return result;
}
Run Code Online (Sandbox Code Playgroud)

如何调用下面的 ProcessSession 方法来获取 IsAuthenticated 方法中返回 boolean 的响应对象?

public bool IsUserAuthenticated()
{
    var result = !string.IsNullOrEmpty(_settingsService.UserIdSetting);

    if (result)
    {
        ProcessSession(_settingsService.UserIdSetting);

        result = _sessionResponse.Status;
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

Jas*_*son 5

使用异步/等待

public async Task<bool> IsUserAuthenticated()
{
    var result = !string.IsNullOrEmpty(_settingsService.UserIdSetting);

    if (result)
    {
        var _sessionResponse = await ProcessSession(_settingsService.UserIdSetting);

        result = _sessionResponse.Status;
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)