Я работаю с файлами, которые содержат сотни фрагментов сжатых данных.Я использую Threadpool для этого.Каждый фрагмент данных передается в очередь Threadpool.
RawData - это массив байтов, а исключение находится на 181 строке, что составляет
decompress.CopyTo(mem);
Все, что я заметил, это то, что, если я просто запускаюприложение тогда сгенерирует десятки исключений ZlibException.Если бы я его отладил и приложение иногда находилось в состоянии ожидания, то есть несколько исключений.После этого я установил метод сна на 1 секунду между распаковкой данных и получил только 4 исключения.
RawData - это массив байтов.
ZlibStream decompress = new ZlibStream(new MemoryStream(c.RawData), CompressionMode.Decompress);
MemoryStream mem = new MemoryStream();
decompress.CopyTo(mem);
Ionic.Zlib.ZlibException: Bad state (incorrect data check)
w Ionic.Zlib.InflateManager.Inflate(FlushType flush)
w Ionic.Zlib.ZlibCodec.Inflate(FlushType flush)
w Ionic.Zlib.ZlibBaseStream.Read(Byte[] buffer, Int32 offset, Int32 count)
w Ionic.Zlib.ZlibStream.Read(Byte[] buffer, Int32 offset, Int32 count)
w System.IO.Stream.InternalCopyTo(Stream destination, Int32 bufferSize)
w System.IO.Stream.CopyTo(Stream destination)
w myApp.Form1.Decompress(Object state) w X:\Path\To\Projects\myApp\myApp\Form1.cs:wiersz 181
Я использую ThreadpoolПоэтому откладывать работников бессмысленно.Я не могу найти решения для этого случайного исключения, которое зависит от того, как быстро выполняется приложение.