我在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 异常。
请向我建议如何解决问题
答案 0 :(得分:5)
我认为这里的问题是这两行
string contents = reader.ReadToEnd();
MessageBox.Show(contents);
这两行尝试在字符串变量中读取整个文件并尝试显示它。这在手机上不是一个好习惯(即使在具有巨大内存和页面文件支持的桌面上也是如此)。
尝试从流中读取几个字节并将其放入字符串并在messagebox中显示。这应该可以解决你的问题。