我必须使用一个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