Страница 1 из 2
Проблемы большого отчета!
Добавлено: 30 дек 2014, 16:35
kin123456789
Добрый день ! подскажите, как лучше решить проблему: Создается большой отчет (200-250 страниц), при report.Render() происходит длительное зависание! Как устранить это зависание! Спасибо!
Re: Проблемы большого отчета!
Добавлено: 30 дек 2014, 16:59
kin123456789
В данном случае необходимо реализовать обработку в другом потоке! Может уже есть варианты данной реализации! Для визуализации длительной операции используется viewer.progress.SetLabelProgress, однако при report.Render() он зависает и не обновляется! Спасибо!
Re: Проблемы большого отчета!
Добавлено: 31 дек 2014, 10:53
Anton Lozovskiy
Здравствуйте,
Готовых вариантов нету. Вы можете попробовать рендеринг через BackgroundWorker, возможно он сможет помочь.
Спасибо.
Re: Проблемы большого отчета!
Добавлено: 31 дек 2014, 11:36
kin123456789
Здравствуйте! Это вариант и использую, но выдает ошибку на строке report.Render() - осуществляется многопоточный доступ!
Re: Проблемы большого отчета!
Добавлено: 31 дек 2014, 11:49
Anton Lozovskiy
Здравствуйте,
Других вариантов пока предложить не можем. Возможно есть ограничение в самом Silvelight.
Спасибо.
Re: Проблемы большого отчета!
Добавлено: 25 мар 2015, 15:06
kin123456789
Здравствуйте!
Есть код:
Код: Выделить всё
void CreateReport()
{
StiReport report = new StiReport();
report.Load(reportTemplate.ReportInf);
report.RegBusinessObject("paymentsByRegDate", "paymentsByRegDate", paymentsByRegDate);
worker.RunWorkerAsync(report);
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
StiReport report= (StiReport)e.Argument;
report.Render(); // в этой строке вылетает Exception Недопустимый межпотоковый доступ.
// Инициализатор типа "Stimulsoft.Report.SL.Helpers.StiFontHelper" выдал исключение.
}
void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
viewer.Report = (StiReport)e.Result;
}
Спасибо!
Re: Проблемы большого отчета!
Добавлено: 25 мар 2015, 15:47
Anton Lozovskiy
Здравствуйте,
Класс StiFontHelper используется для того, чтобы расчитывать точный размер, который нужен для вывода текста.
Для этого используется компонент TextBlock. В сильверлайте другого способа просто нету, и исключить этот код мы никак не можем.
Поэтому советуем не использовать worker для рендеринга отчета. Конешно главный поток немного подвисает, если отчет занимает длительное время на построение - но по другому никак.
Спасибо.
Re: Проблемы большого отчета!
Добавлено: 25 мар 2015, 15:59
kin123456789
Спасибо! Данная ошибка выдается всегда, когда осуществляется регистрация бизнес-объектов в отчете!
Re: Проблемы большого отчета!
Добавлено: 25 мар 2015, 16:26
kin123456789
Так все-таки проблема именно в классе StiFontHelper?
Re: Проблемы большого отчета!
Добавлено: 25 мар 2015, 17:21
kin123456789
в отчетах нужно просто убрать свойство "Может расти". Все работает только отчеты стали с обрезанными значениями в полях!