Web サービスから大量の xml データを取得する必要があります。
このスニペットのように Task を使用して非同期リクエストを送信します
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 を作成する方が悪いと思います。
可能な信頼できる解決策を教えていただけますか?
前もって感謝します :)