好的,所以我创建了一个使用soap服务登录DataProvider类的方法。登录将进行三次单独的soap调用,并在成功登录时将所有响应组合到ViewController的单个回调中。我想要使用Task并行库来实现这一目标(但此时它只会引起头疼)。我还要求在" LoginAsync"中出现任何异常。方法被传递回视图控制器类以进行日志记录。
分钟的代码(不是编译)是:
public void LoginAsync(string username, string password, Action<int,SystemConfig,string> callback)
{
Task<int> task = Task<int>.Factory.StartNew(() =>
{
int result = _service.Login(username, password);
if (result == 1)
{
_header.AuthenticationToken = _service.GenerateToken();
_systemConfig = _service.GetSystemConfig(_cultureCode);
}
return result;
}).ContinueWith((Task<int> antecedent) =>
{
callback(antecedent.Result, _systemConfig, _header.AuthenticationToken);
}, CancellationToken.None, TaskScheduler.FromCurrentSynchronizationContext(), TaskContinuationOptions.OnlyOnRanToCompletion);
}
无论我尝试多少种不同的方式,我似乎无法让它工作,因为我可以满足我的所有要求。在那一刻,编译错误就是抱怨先行参数。