Skip to main content
 首页 » 编程设计

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

2024年01月28日28jirigala

将 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); 
}