У меня есть следующий код в библиотеке Helper.dll. Эта сборка имеет встроенный XML-файл под названием Products.XML. Метод GetProducts
отлично работает. Но требуется несколько секунд, чтобы ответить, потому что это синхронно. Я хочу выпустить интерфейс, когда эта операция загрузки продолжалась.Изменение синхронного вызова Async
Есть нет асинхронных вызовов не доступны для LINQ к XML операций, как XDocument.Load
, так что я не могу использовать async
и await
здесь.
Цените любой ответ.
public static class LookupUtil
{
public static IEnumerable<XElement> GetProducts()
{
var stream = Assembly.
GetExecutingAssembly().
GetManifestResourceStream("Helper.Products.XML");
var reader = new XmlTextReader(stream);
var document = XDocument.Load(reader);
return document.Descendants("Products");
}
}
Я бы рекомендовал использовать 'Task.Run' в вызывающем коде. Не пытайтесь подделывать асинхронное поведение в коде библиотеки. –