将 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);
}
关于c# - 在 C# 中线程化 2 个 Web 服务调用和组合结果数据的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9041896/