我正在尝试在运行时执行任务列表。我希望这是一个异步操作。每个任务都在调用 Web 服务并返回我添加到列表中的响应。完成所有操作后,我会将所有操作合并到一个文档中。
这是我的代码。目前它仅作为同步调用执行。我希望他们一次被枪杀。
List<XmlDocument> XmlResponse = new List<XmlDocument>();
XmlDocument xDocument = new XmlDocument();
ServiceRequest service = GetServiceRequest();
var tasks = new List<Task>();
Parallel.ForEach(service.IRN, x =>
{
tasks.Add(Task.Factory.StartNew(() =>
{
XmlDocument xRequest = BuildServiceRequest(
new ServiceRequest
{
AccountNumber = service.AccountNumber,
MemberId = service.MemberId,
IRN = new List<string> { x }
});
Debug.Print("Service Call " + DateTime.Now.ToString("hh.mm.ss.ffffff"));
XmlDocument xResponse = WebRequest.Submit(xRequest); // This is invoking service
XmlResponse.Add(xResponse);
}));
});
try
{
Task.WaitAll(tasks.Where(x => x != null).ToArray());
xDocument = PrepareServiceResponse();
Debug.Print("Task Ends" + DateTime.Now.ToString("hh.mm.ss.ffffff"));
}
如果我现在运行此代码,则会同步调用该服务。任何人都可以建议在任务列表中一次拍摄所有电话的方法吗?