Crystal の ReportDocuments の (いくつかの) 複数のインスタンスをメモリにロードするのに問題があります。次のコードを使用します。
Dim sRPT As New ReportDocument
sRPT.Load("PATH\TO\MY.RPT")
Dim sRPTs As New List(Of ReportDocument)
For i = 0 To 100
Dim sClone As ReportDocument = sRPT.Clone
sClone.Refresh()
sRPTs.Add(sClone)
Console.WriteLine("RPT Clonado " & i.ToString())
Next
74 番目のインスタンスに到達すると、Refresh() 呼び出しで「レポートの読み込みに失敗しました」という例外がスローされます。さらに、.Load(path) メソッドを直接呼び出しても同じ例外が発生し、ロード/更新している RPT ファイルに関係なく、アプリケーション内のすべての ReportDocumetns に影響します。
現在、Crystal XI R2 を使用していますが、このコードを v12 アセンブリ (CR 2008) でテストすると、同じ問題で終了しました。
誰かがこのようなことでつまずいたことがありますか? このすべてのインスタンスの理由は、ユーザーごとに複数の rpt ファイルのレポート キャッシュがあり、この問題に対するそれほど厄介な回避策があれば、ほとんどの場合そのままになります。