3

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

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

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异常。

请向我建议如何解决该问题

4

1 回答 1

5

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

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

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

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

于 2013-03-20T13:22:53.943 回答