У меня есть решение C # UWP для себя, и я определил специальный манифест broadFileSystemAccess
, чтобы я мог получить доступ ко всем файлам с моего компьютера напрямую.
Теперь я загружаю кучу файлов изображений впамять, чтобы показать их на GridView
. На эту задачу требуется много времени, я хотел бы ускорить ее, запустив параллельно.
foreach (var item in someList)
{
BitmapImage bitmapImage = new BitmapImage();
StorageFile file = await StorageFile.GetFileFromPathAsync(item.ImagePath);
using (IRandomAccessStream fileStream = await file.OpenAsync(FileAccessMode.Read))
{
await bitmapImage.SetSourceAsync(fileStream);
}
someOtherList.Add(new someModel { ... });
};
В каком-то другом потоке я обнаружил использование Parallel.ForEach
- но это не поддерживает асинхронные вызовы,Затем я увидел библиотеку под названием Dasync
с using Dasync.Collections
. Однако использование этой функции просто вызывает ошибку, сообщающую что-то об интерфейсе, который был упорядочен для другого потока, который был вызван приложением (грубо переведено), поэтому я подумал, что библиотека также может не подходить для этой задачи.
Как бы распараллелить это в приложении C # UWP?