Я использую SharpZipLib для сжатия файлов. Библиотека заключена в интерфейс плагина, в отдельную DLL. Я передаю плагину dll параметр ByRef
, чтобы отслеживать процесс сжатия.
SharpZipLib при сжатии будет периодически вызывать подпрограмму делегата, переданную при запуске сжатия. Я не могу понять, как обновить параметр ByRef
при вызове делегата. Если я пытаюсь присвоить переменную ByRef
в теле выражения lamba, я получаю ошибку 'ByRef' parameter '<parametername>' cannot be used in a lambda expression
.
Вот мой код:
Using InputFile As New IO.FileStream(SourceFile, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
Using OutputFile As New IO.FileStream(DestFile, IO.FileMode.Create)
Using GZipStream As New GZipOutputStream(OutputFile)
Dim Buffer(524228) As Byte
Dim Handler As New ProgressHandler(Sub(Sender As Object, EventArgs As ProgressEventArgs) Progress += EventArgs.Processed)
StreamUtils.Copy(InputFile, GZipStream, Buffer, Handler, New TimeSpan(10000000), Nothing, "")
End Using
End Using
End Using
Спасибо!