PowerTools ActiveReports for .NET 9.0J
CacheToDisk プロパティ
使用例 

レポート生成時やPDFエクスポート時、現在処理していないレポートのページを、メモリの代わりにハードディスクに格納するかどうかを取得または設定します。
構文
'宣言
 
Public Property CacheToDisk As Boolean
public bool CacheToDisk {get; set;}

プロパティ値

ブール型。デフォルト値は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
参照

関連項目

SectionDocument クラス
SectionDocument メンバ

 

 


©2003-2015 GrapeCity inc. All rights reserved.