我需要从 Web 服务中获取大量 xml 数据。
我使用像这个片段这样的任务发送异步请求
LimitedConcurrencyLevelTaskScheduler lcts = new LimitedConcurrencyLevelTaskScheduler(10);
TaskFactory factory = new TaskFactory(lcts);
List<Task> tasks = new List<Task>();
...
tasks.Add(factory.StartNew(() => GetRecords(country, names)));
...
Task.WaitAll(tasks.ToArray());
Web 服务在后端有很多工作要做,因此很多请求超时,或者我从 Web 服务收到一般错误。
我试图首先调整 LimitedConcurrencyLevelTaskScheduler 的数量来解决这个问题。
一些 XML 的大小为 2Mb,所以我使用 XmlReader 读取流并XmlNode node = new XmlDocument().ReadNode(reader);
用于我需要的数据,但有时程序崩溃或进入死循环(我认为原因是 web 服务的 xml 响应不正确)。
我认为直接从整个响应创建 XDoc 更糟糕。
你能建议我一个可能可靠的解决方案吗?
提前致谢 :)