Примечание. Я использую приложение для перевода. Извините, если это не всегда очень понятно.
Я разрабатываю приложение UWP, и у меня возникла проблема с управлением типом файла, расширением CBZ. Некоторые файлы открываются без проблем, другие файл никогда не открывается и блокирует задачу.
Вот код, который я использую:
Task loadEbookTask = Task.Factory.StartNew(() =>
{
Stream streamEbook = WindowsRuntimeStorageExtensions.OpenStreamForReadAsync(ebookFile).Result;
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Content = new ZipArchive(streamEbook, ZipArchiveMode.Read, false);
// Pour charque archive, prendre que des extensions valident.
foreach (var file in Content.Entries)
{
string extension = Path.GetExtension(file.Name).ToLower();
bool isFileExtensionOk = EbooksManager.AvailableExtensionsImage.Contains(extension);
if (isFileExtensionOk)
{
ArchivesExploitable.Add(file);
}
}
TotalPage = Convert.ToUInt32(ArchivesExploitable.Count());
});
if (loadEbookTask.Wait(4000))
{
EbookCbz.LoadEbook = EbookLoad.Ok;
}
else
{
EbookCbz.LoadEbook = EbookLoad.Timeout;
}
Он зацикливается:
Stream streamEbook = WindowsRuntimeStorageExtensions.OpenStreamForReadAsync(ebookFile).Result;
В Visual Studio память go больше не увеличивается, но сборщик мусора продолжает вызываться. С Task.Wait (4000) он не останавливает Task, поэтому он не перестает работать в фоновом режиме. И если я открою другой файл, будет создана новая задача, которая превратится в фоновую.
Мой вопрос: - Есть ли метод, открывающий файл, и что его можно отменить, если он превышает определенное время.