【发布时间】:2011-10-26 20:11:21
【问题描述】:
我有许多命令调用一个肥皂网络服务(Betfair API)。都是经典的异步编程模型类型...
public void DoXXX( <input parameters ...> )
{
XXXRequest Request = new XXXRequest();
// populate Request from input parameters ...
BetfairService.BeginXXX( Request, XXXCallback, State );
}
private void XXXCallback(IAsyncResult Result)
{
XXXResponse Response = BetfairService.EndXXX(Result);
if (Response.ErrorCode == XXXErrorCode.OK)
// store data from Response
else
// deal with error
}
我想执行一组指定的命令,然后在所有命令完成后使用组合返回的数据值进行一些计算。
我可以按顺序执行此操作,方法是创建一个命令队列,并让每个回调方法在完成后触发队列中的下一个命令,并将计算作为队列中的最后一项。但是,这相对较慢。
我理想的解决方案是让所有这些命令并行运行,然后在所有命令完成后触发计算。我试过查看 Task.Factory.FromAsync(),但我能找到的所有示例都只包括对 BeginXXX / EndXXX 的直接调用,而不是对响应做任何事情。
有没有人对这个问题的合适解决方案有任何指示?
【问题讨论】:
标签: c# asynchronous