none
XPSファイル出力について RRS feed

  • 質問

  • お世話になります。

    XPSドキュメント作成について質問があります。

    XPSを扱うのは初めてで、ネットの情報などを参考に、XPSドキュメントをファイルにセーブする為に下記のようなコードを書いたのですが、メモリの消費が多くてなってしまいます。
    最終的にファイルにはセーブできているのですが、メモリ消費を抑える方法はございますでしょうか?
    99ページという量が問題なのかとも考え、同ファイルに数ページづつ書き込むなど考えたのですが実現方法が分かっていません・・・。

    そもそも、WriteAsync()は、この様な動きになるものなのでしょうか?

    動作環境:
    Windows Vista
    Itel Core2 Duo
    メモリ(RAM) 2G

    対策、解決策がありましたら、よろしくお願いします。

    以下、状況です。

    保存処理 xpsdw.WriteAsync(fixedDocument);を
    実行前の、fixedDocumentの構築まででは、本アプリでのメモリ使用は132Mですが、

    xpsdw.WriteAsync(fixedDocument);
    を実行中にどんどんメモリを消費し出し、1Gほどまで消費してしまい動作が遅くなります。
    (出力をプリンタにした場合も同じくWriteAsync実行で同様の状況になります。)

    fixedDocumentは、Page 99ページほどになっており、
    最終的に出来たXPSファイルは、99ページでファイルサイズ1.7Mほどになっています。

    --- 以下コード --
    FixedDocument fixedDocument = new FixedDocument(); ;
    docpackage = System.IO.Packaging.Package.Open(filename, FileMode.Create);
    xpsDoc = new XpsDocument(docpackage);
    xpsdw = XpsDocument.CreateXpsDocumentWriter(xpsDoc);

    ・・・fixedDocumentの構築・・・

    // 保存処理
    xpsdw.WriteAsync(fixedDocument);
    ---

    もしご存じの方がおられましたら、よろしくお願い致します。
    2009年12月8日 5:46