我必須使用一個API來強制實現其回調接口的類作爲身份驗證方法的參數。如何強制任務等待子任務?
public class CallBack : ICallBack
{
public object Response;
public void OnSuccess(object response)
{
Response = response;
}
public void OnException(Exception ex) { }
}
驗證呼叫
public async Task<bool> LoginAsync(string username, string password)
{
CallBack callback = new CallBack();
await Task.Factory.StartNew(
() => userService.Authenticate(username, password, callback),
TaskCreationOptions.AttachedToParent);
return callback.Response is User ? true : false;
}
的問題是,在回調之前LoginAsync
完成被調用。我希望通過使用TaskCreationOptions.AttachedToParent
啓動Authenticate
呼叫,它會傳播到在Authenticate
開始的任何子任務,但它不會。
請參閱[將基於回調的異步方法轉換爲等待任務的最佳方式](http://stackoverflow.com/questions/11879967/best-way-to-convert-callback-based-async-method-to-awaitable-任務) – Kalten
什麼是'callback.ReturnValue'?我沒有在你的課堂上看到這樣的屬性 – CodingYoshi
修正了這個問題。應該是callback.Response – user3578834