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

Vee*_*nki 3 c# windows-phone-7

我在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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

请告诉我如何解决这个问题

Mur*_*bul 5

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

string contents = reader.ReadToEnd();
        MessageBox.Show(contents);
Run Code Online (Sandbox Code Playgroud)

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

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