我有一个简单的代码
byte[] buffer = Encoding.UTF8.GetBytes("abracadabra");
MemoryStream ms = new MemoryStream();
DeflateStream ds = new DeflateStream(ms, CompressionMode.Compress, false);
ms.Write(buffer, 0, buffer.Length);
DeflateStream ds2 = new DeflateStream(ms, CompressionMode.Decompress, false);
byte[] buffer2 = new byte[ms.Length];
ds2.Read(buffer2, 0, (int)ms.Length);
Console.WriteLine(Encoding.UTF8.GetString(buffer2));当从ds2阅读时,我有以下内容:
Stacktrace:
at (包装托管到本地) System.IO.Compression.DeflateStream.ReadZStream (intptr,intptr,int) <0x00004>
at (包装托管到本地) System.IO.Compression.DeflateStream.ReadZStream (intptr,intptr,int) <0x00004>
在System.IO.Compression.DeflateStream.ReadInternal (byte[],int,int) 0x00031 ( C:\cygwin\tmp\monobuild\build\BUILD\mono-2.6.3\mcs\class\System\System.IO.Compression\DeflateStream.cs:192 )
在C:\cygwin\tmp\monobuild\build\BUILD\mono-2.6.3\mcs\class\System\System.IO.Compression\DeflateStream.cs:214的System.IO.Compression.DeflateStream.Read (byte[],int,int) 0x00086
在C:\Users\ilukyanov\Desktop\Cassini\GZipDemo\Main.cs:27的testtesttest.MainClass.Main (string[]) 0x00041
在(包装器运行时-调用) .runtime_invoke_void_object (对象,intptr,intptr,intptr)
此应用程序请求运行时以一种不寻常的方式终止它。请与应用程序的支持小组联系以获得更多信息。
这个问题出现在Mono 2.6.1和2.6.3中.
是否有任何已知的方法可以在Mono中成功地从DeflateStream中读取?或者可能有一些具有相同功能的第三方开源程序集?
发布于 2010-03-18 15:38:08
您可以本机使用DllImport互操作调用zlib。
唯一的诀窍是在结构中使用合适的大小,并在LD_LIBRARY_PATH中包含共享库,如果您是在Unix平台上的话。
发布于 2010-03-22 22:48:13
请给莫诺开个窃听器。如果你这样做,它可能会在2.6.4的时间内修好。
https://stackoverflow.com/questions/2471057
复制相似问题