using (StreamReader streamReader = File.OpenText(file))
{
return XDocument.LoadAsync(streamReader,
LoadOptions.PreserveWhitespace,
CancellationToken.None)
.ContinueWith(lt =>
{
XDocument document = lt.Result;
...
});
}
На строчке XDocument document = lt.Result; вылетает эксепшен ObjectDisposedException: Cannot read from a closed TextReader.
Object name: 'StreamReader'. Что в принципе понятно - LoadAsync стартует уже после того, как диспоузнулся StreamReader. Вопрос: а в принципе можно как-то такую конструкцию заставить работать (имею в виду без await)?
У икс документа есть синхронный лоад
есть. таск.ран и там внутри всё делать. но так скучно :) Есть же уже готовый асинк, хочется с ним помучаться
await наше все
Зачем таск ран XDocument.Load()
что бы приложение не морозилось, пока будет несколько гиговых файлов парсить
А почему await нельзя?
смесь старого синхронного и нового асинхронного кода. В результате надо постоянно следить, что бы во всех await ах был прописан ConfigurAwait(false). Иначе уже пару дедлоков словили. вот и решили попробовать через ContinueWith это делать. Что бы ConfigurAwait(false) был нужен только в самом последнем синхронном вызове
Обсуждают сегодня