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

标签 c# multithreading

将 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/

相关文章:

java - 当最小化或调整 JFrame 大小时,由线程调整大小的 JPanel 会获取其默认大小

c# - 在 C# 中将数据传递给 child 的 STDIN

c# - 使用 XSD.exe 自定义类名生成的类

c# - NancyFX如何处理序列化的DateTime?

c# - 通过代码隐藏在 div 中的图像

c++ - 检查一定数量的线程是否已完成的任何方法

multithreading - 如果主线程拥有一个临界区,那么尝试获取该临界区的函数是否会阻塞(如果它也在主线程上)?

c# - 代码优先配置错误

python - 在 Python 中使用 Pool 时将 kwargs 传递给 starmap

java - 为什么这里需要同步?