在Windows手机中解压缩大文件会导致OutOfMemory异常

时间:2013-03-20 13:15:37

标签: c# windows-phone-7

我在Windows Phone应用程序中使用后台传输服务下载了一个大型zip文件。

当我尝试使用以下tutorial解压缩文件时:

private void LoadZipfile()
{
    WebClient c = new WebClient();
    c.OpenReadCompleted += new OpenReadCompletedEventHandler(openReadCompleted);
    c.OpenReadAsync(new Uri("http://www.mydomain.com/myZipFile.zip"));
}

private void openReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    UnZipper unzip = new UnZipper(e.Result);
    foreach (string filename in unzip.FileNamesInZip())
    {
        Stream stream = unzip.GetFileStream(filename);
        StreamReader reader = new StreamReader(stream);
        string contents = reader.ReadToEnd();
        MessageBox.Show(contents);
    }
}

但是在解压缩时,它会抛出 OutOfMemory 异常。

请向我建议如何解决问题

1 个答案:

答案 0 :(得分:5)

我认为这里的问题是这两行

string contents = reader.ReadToEnd();
        MessageBox.Show(contents);

这两行尝试在字符串变量中读取整个文件并尝试显示它。这在手机上不是一个好习惯(即使在具有巨大内存和页面文件支持的桌面上也是如此)。

尝试从流中读取几个字节并将其放入字符串并在messagebox中显示。这应该可以解决你的问题。