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

ここでの問題はこれらの2行だと思います

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

これらの 2 行は、ファイル全体を文字列変数で読み取って表示しようとします。これは携帯電話では良い方法ではありません (巨大なメモリとページ ファイルをサポートするデスクトップでも)。

ストリームから数バイトを読み取って文字列に入れて、メッセージボックスに表示してみてください。これで問題が解決するはずです。

于 2013-03-20T13:22:53.943 に答える