/// <summary>
/// decompress gzip data
/// </summary>
/// <param name="data">compressed data</param>
/// <returns></returns>
public async static Task<byte[]> Decompress(byte[] data)
{
MemoryStream ms = null;
GZipStream compressedzipStream = null;
MemoryStream outBuffer = new MemoryStream();
try
{
ms = new MemoryStream(data);
compressedzipStream = new GZipStream(ms, CompressionMode.Decompress);
byte[] block = new byte[1024 * 16];
while (true)
{
int bytesRead = await compressedzipStream.ReadAsync(block, 0, block.Length);
if (bytesRead <= 0)
{
break;
}
else
{
outBuffer.Write(block, 0, bytesRead);
}
}
}
finally
{
if (null != compressedzipStream) compressedzipStream.Close();
if (null != ms) ms.Close();
}
return outBuffer.ToArray();
}