在C#中线程化2个Web服务调用和组合结果数据的最佳方法是什么?

arc*_*880 1 c# multithreading

什么是线程化2个进程并将结果数据与结果调用相结合的最佳方法?我目前正在与2个Web服务连接.我想在一个线程中将一个Web服务A称为DataA.然后在另一个线程中为DataB调用Web服务B. 然后,我需要从DataA和DataB检索特定信息以创建DataC.我还需要能够在任何时候取消整个过程.

我一直在研究使用ThreadPool但是没有办法取消任何ThreadPool线程.

更新:目前使用C#.NET 4.0

Ric*_*der 5

我会使用任务并行库(TPL,http://msdn.microsoft.com/en-us/library/dd537609.aspx)

List<Data> GetData(CancellationToken cancel)
{
 List<Data> dataA;
 List<Data> dataB;
 Task[] tasks = new Task[]
 {
   Task.Factory.StartNew(() => DataA()),
   Task.Factory.StartNew(() => DataNB()),
 };

 Task.WaitAll(tasks, cancel); // Block until all tasks complete or cancelled.
 if (cancellation.IsCancellationRequested)
   return new List<Data>();
 return dataA.Concat(dataB);
}
Run Code Online (Sandbox Code Playgroud)