This example shows how to render several reports in the thread. Since the render reports in the thread run the background, it provides an opportunity to increase productivity. For this purpose the BackgroundWorker class is used. For simplicity, the same report is run to build in five different threads:
private void button2_Click(object sender, EventArgs e)
{
	for (int index = 0; index < 5; index++)
	{
		var worker = new BackgroundWorker();
		worker.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
		worker.RunWorkerAsync();
	}
}

In the start of the backgroundWorker2_DoWork() event process you can load the report and connect data. Also, if it is necessary, you can subscribe to some events. In ther end, compile and render the report:
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
{
	var report = new StiReport();
	using (var stream = Assembly.GetExecutingAssembly().
		GetManifestResourceStream("RenderInThread.MasterDetailSubdetail.mrt"))
	{
		report.Load(stream);
	}

	report.IsRendered = false;
	report.EndRender += new EventHandler(ReportTemplate_EndRender);
	report.Render(false);
}

На скриншоте ниже Вы можете увидеть результат выполнения данного кода:

Rendering Several Reports in the Thread

Используя этот сайт, вы соглашаетесь на использование файлов Cookie для аналитики и персонализированного контента. Файлы Cookie хранят полезную информацию на вашем компьютере, чтобы помочь нам повысить эффективность и удобство использования. Для получения дополнительной информации, пожалуйста, прочтите Конфиденциальность и Использование Cookie.