将 2 个进程线程化并组合来自结果调用的结果数据的最佳方法是什么?我目前正在连接 2 个 Web 服务。我想在一个线程中调用一个 Web 服务 A 来表示 DataA。然后在另一个线程中为 DataB 调用 Web 服务 B。然后我需要从 DataA 和 DataB 中检索特定信息以创建 DataC。我还需要能够随时取消整个过程。
我一直在考虑使用 ThreadPool,但没有办法取消任何 ThreadPool 线程。
更新:目前使用 C# .NET 4.0
请您参考如下方法:
我会使用任务并行库(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);
}
