GrapeCity.ActiveReports.Document.v9 アセンブリ > GrapeCity.ActiveReports.Document 名前空間 > SectionDocument クラス : CacheToDisk プロパティ |
ブール型。デフォルト値はFalseです。
このプロパティをTrueに設定すると、大量のメモリを消費するような場合に、メモリの代わりにハードディスクを使用して処理を実行します。この時、ハードディスク上に一時ファイルが作成されます。一時ファイルを確実に消去するにはDocumentクラスのDisposeメソッドを実行する必要があります。ただし、レポートの実行中に例外が発生した場合、一時ファイルは削除されずにハードディスク上に残るため注意が必要です。
このプロパティが有効になるのは、レポート生成時(Runメソッド実行時)とPDFエクスポート時です。使用するデータキャッシュ領域はCacheToDiskLocationプロパティで指定します。CacheToDiskLocationプロパティが指定されなかった場合、データキャッシュ領域に分離ストレージを使用します。分離ストレージは物理フォルダに比べ、使用サイズの制限等があるため、このプロパティを使用する場合は、CacheToDiskLocationプロパティを設定することをお勧めします。なお、分離ストレージに作成された一時ファイルはアプリケーション終了時に自動的に削除されますが、フォルダについては自動的に削除されません。
デフォルトの一時ファイル出力先(分離ストレージ)は以下の通りです。
WinForms:
C:\Documents and Settings\<user name>\Local Settings\Application Data\IsolatedStorage
C:\Users\<user name>\AppData\Local\IsolatedStorage
WebForms:
以下はIIS規定のユーザー(ASPNET)の下でアプリケーションを実行した場合です。
C:\Documents and Settings\<machine name>\ASPNET\Local Settings\Application Data\IsolatedStorage
または
C:\Documents and Settings\ASPNET\Local Settings\Application Data\IsolatedStorage
IIS規定のユーザー(NETWORK SERVICE)の下でアプリケーションを実行した場合、以下のフォルダにファイルが作成されます。
C:\Documents and Settings\Default User\Local Settings\Application Data\IsolatedStorage
しかしながら、規定の設定では、このフォルダに書き込むことはできず、エラーが発生します。これは「NETWORK SERVICE」ユーザーアカウントが最低限のアクセス許可しか持っていないためです。IIS6.0でCacheToDiskを使用する場合は、同時にCacheToDiskLocationプロパティも設定し、分離ストレージではなく任意の物理フォルダを使用してください。
CacheToDiskプロパティは分離ストレージ(IsolatedStorage)を使用し、生成されるレポートデータをハードディスクに格納します。このためCacheToDiskプロパティをTrueに設定する場合は、このアプリケーション自身が、分離ストレージにアクセスできる権限(適切なIsolatedStorageFilePermission)を有している必要があります。なお、通常の.NET Frameworkのアプリケーションはすでにこの権限を有しています。分離ストレージの詳細につきましては、MSDNライブラリの「分離ストレージ」をご確認ください。
■ 注記 ■
メモリの代わりにハードディスクを使用するため、レポートの生成速度は遅くなります。
このプロパティは、使用することによってメモリ使用量が減ることを保証するものではなく、メモリ不足による例外エラーの発生を極力少なくさせるための補完的な機能として提供しています。有効性が見受けられるレポートの場合のみに使用してください。
レポートの生成処理だけでなく、PDFエクスポート処理においてもこの設定は有効です。他の形式のエクスポートではこの機能は働きませんので、大量のレポートをエクスポートする場合に、メモリのリソース不足を引き起こす可能性があります。
private void arv_Load(object sender, System.EventArgs e) { rptDocument rpt = new rptDocument(); rpt.Document.CacheToDisk = true; rpt.Run(); arv.Document=rpt.Document; }
Private Sub arv_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles arv.Load Dim rpt As New rptDocument rpt.Document.CacheToDisk = True rpt.Run() arv.Document = rpt.Document End Sub