Проблемы большого отчета!
-
- Сообщения: 98
- Зарегистрирован: 14 окт 2014, 12:29
Проблемы большого отчета!
Добрый день ! подскажите, как лучше решить проблему: Создается большой отчет (200-250 страниц), при report.Render() происходит длительное зависание! Как устранить это зависание! Спасибо!
-
- Сообщения: 98
- Зарегистрирован: 14 окт 2014, 12:29
Re: Проблемы большого отчета!
В данном случае необходимо реализовать обработку в другом потоке! Может уже есть варианты данной реализации! Для визуализации длительной операции используется viewer.progress.SetLabelProgress, однако при report.Render() он зависает и не обновляется! Спасибо!
-
- Сообщения: 264
- Зарегистрирован: 12 ноя 2007, 08:16
Re: Проблемы большого отчета!
Здравствуйте,
Готовых вариантов нету. Вы можете попробовать рендеринг через BackgroundWorker, возможно он сможет помочь.
Спасибо.
Готовых вариантов нету. Вы можете попробовать рендеринг через BackgroundWorker, возможно он сможет помочь.
Спасибо.
-
- Сообщения: 98
- Зарегистрирован: 14 окт 2014, 12:29
Re: Проблемы большого отчета!
Здравствуйте! Это вариант и использую, но выдает ошибку на строке report.Render() - осуществляется многопоточный доступ!
-
- Сообщения: 264
- Зарегистрирован: 12 ноя 2007, 08:16
Re: Проблемы большого отчета!
Здравствуйте,
Других вариантов пока предложить не можем. Возможно есть ограничение в самом Silvelight.
Спасибо.
Других вариантов пока предложить не можем. Возможно есть ограничение в самом Silvelight.
Спасибо.
-
- Сообщения: 98
- Зарегистрирован: 14 окт 2014, 12:29
Re: Проблемы большого отчета!
Здравствуйте!
Есть код:
Спасибо!
Есть код:
Код: Выделить всё
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;
}
-
- Сообщения: 264
- Зарегистрирован: 12 ноя 2007, 08:16
Re: Проблемы большого отчета!
Здравствуйте,
Класс StiFontHelper используется для того, чтобы расчитывать точный размер, который нужен для вывода текста.
Для этого используется компонент TextBlock. В сильверлайте другого способа просто нету, и исключить этот код мы никак не можем.
Поэтому советуем не использовать worker для рендеринга отчета. Конешно главный поток немного подвисает, если отчет занимает длительное время на построение - но по другому никак.
Спасибо.
Класс StiFontHelper используется для того, чтобы расчитывать точный размер, который нужен для вывода текста.
Для этого используется компонент TextBlock. В сильверлайте другого способа просто нету, и исключить этот код мы никак не можем.
Поэтому советуем не использовать worker для рендеринга отчета. Конешно главный поток немного подвисает, если отчет занимает длительное время на построение - но по другому никак.
Спасибо.
-
- Сообщения: 98
- Зарегистрирован: 14 окт 2014, 12:29
Re: Проблемы большого отчета!
Спасибо! Данная ошибка выдается всегда, когда осуществляется регистрация бизнес-объектов в отчете!
-
- Сообщения: 98
- Зарегистрирован: 14 окт 2014, 12:29
Re: Проблемы большого отчета!
Так все-таки проблема именно в классе StiFontHelper?
-
- Сообщения: 98
- Зарегистрирован: 14 окт 2014, 12:29
Re: Проблемы большого отчета!
в отчетах нужно просто убрать свойство "Может расти". Все работает только отчеты стали с обрезанными значениями в полях!