Canceling the .Render()?

Stimulsoft Reports.Silverlight discussion
Post Reply
TomKelleher
Posts: 4
Joined: Mon Jun 12, 2017 8:36 pm

Canceling the .Render()?

Post by TomKelleher » Wed Feb 21, 2018 11:35 pm

Folks,

I need to give users the ability to cancel a rendering StiReport. I killed two days trying everything I could think of. Any suggestions?

• Tried passing the UI's report object into a BackgroundWorker and firing the report.Render() routine inside it. That failed because of cross-threading issues. The stack-trace indicates some kind of TextBox or font-sizing issue going on inside.
• Tried passing the report object into another Thread entirely using Tasks. Same issue.
• Tried creating code-only versions of the StiReport object to avoid any connection to the UI. Same issue.
• I tried to make a disconnected clone by serializing the report to JSON and back – but the serialization failed because an internal property had no value.
o Tried to instantiate that property (PageNumberThrough, an int property) but it’s read-only and apparently only created when rendering begins
• I did manage to hook up the Report_Rendering event, which fires once per page. I figured with this I could let the user click the Cancel button, set some flag-Boolean to false, and the next time the Rendering event fires I would call report.IsStopped=true to stop it. BUT…the user cannot click the Cancel button, because the .Render routine “owns” the UI thread.
• Tried to implement Application.DoEvents() to let the UI “listen” to other UI activity, like a user clicking Cancel. But Silverlight doesn’t have a .DoEvents() method.

Ideas?
Alex K.
Posts: 6476
Joined: Thu Jul 29, 2010 2:37 am

Re: Canceling the .Render()?

Post by Alex K. » Mon Feb 26, 2018 7:38 am

Hello,

Please send us your request with detailed description on support@stimulsoft.com. We will check it and will reply to you by email fast as possible.

Thank you.
Post Reply