ReportViewer コントロールと、いくつかの問題を引き起こしているカスタム印刷ジョブ ワークフローを使用しています。私のコードは次のようになります。
ids.ForEach(delegate(Guid? guid)
{
var details = items.Where(e => e.guid == guid);
var ds = new ReportDataSource("Form", details);
ReportViewer.LocalReport.DataSources.Clear();
ReportViewer.LocalReport.DataSources.Add(ds);
ReportViewer.RefreshReport();
});
がRefreshReport()
最終的に呼び出されると、そのRenderingComplete
イベントが発生し、そのイベントで印刷ジョブをキューに入れるロジックがあります。
if (DisplayPrintDialog) ReportViewer.PrintDialog();
else
{
var document = new PrintDocument(ReportViewer.LocalReport);
document.PrinterSettings = ReportViewer.PrinterSettings;
document.Print();
}
DisplayPrintDialog = false;
問題は、RenderingComplete
イベントが発生する前に ForEach ループの実行が終了するため、ループのパスごとに RenderingComplete イベントが発生するまで ForEach ループをブロックする方法が必要なことです。これについての良い方法は何ですか?