我正在使用 SharpZipLib 来压缩文件。该库被包装在一个插件接口(interface)中,在一个单独的 DLL 中。我向插件 dll 传递了一个 ByRef 参数以跟踪压缩进度。

SharpZipLib 在压缩时会定期调用在启动压缩时传递的委托(delegate) sub。我不知道如何在调用委托(delegate)时更新 ByRef 参数。如果我尝试在 Lamba 表达式的主体中分配 ByRef 变量,则会收到 '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

谢谢!

最佳答案

我知道这个问题已经有 4 年历史了,但我正面临同样的问题,我想通了,所以我想与您分享解决方案。

根据 MSDN 页面上的 Microsoft 回答:



希望答案对任何人都有帮助。

关于vb.net - 'ByRef' 参数 '<parametername>' 不能用于 lambda 表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4979208/

10-10 02:23