Guest_imported
New member
- Jan 1, 1970
- 0
Dear sirs,
I have developed a Report Server with Delphi 5. I´m using Crystal Reports 8.5 and Crystal VCL 8.5 component - wich uses CRPE.DLL (this component is a wrapper for CRPE.DLL API CALLS)
I have developed a report server that is ready to run several reports at the same time, using threads. In fact, I already do that with others report engines.
But for Crystal Reports, my server "freeze" when more than 2 users request to run a report at the same time.
Or sometimes, suppose I have several reports running at the same time (but in separate threads). When one of them finish, the CRPE.DLL is unloaded from memory and the another thread that was running hangs.
Since each user request is handled for a separate thread, there are one separate TCRPE component for each request.
Do you have any idea of how can I handle this ?
Is CRPE.DLL thread-safe ?
Are there global objects or variables inside CRPE.dll that are not protected from access of multiples threads (like my application) ?
When two or more threads are running reports, are there only one copy of the CRPE.dll in memory ?
when the first thread finish and try to free the TCRPE component, this DLL are unload from memory ?
I Would be very pleased for any help.
Thanks in advance.
(sorry about my miserable English)
I have developed a Report Server with Delphi 5. I´m using Crystal Reports 8.5 and Crystal VCL 8.5 component - wich uses CRPE.DLL (this component is a wrapper for CRPE.DLL API CALLS)
I have developed a report server that is ready to run several reports at the same time, using threads. In fact, I already do that with others report engines.
But for Crystal Reports, my server "freeze" when more than 2 users request to run a report at the same time.
Or sometimes, suppose I have several reports running at the same time (but in separate threads). When one of them finish, the CRPE.DLL is unloaded from memory and the another thread that was running hangs.
Since each user request is handled for a separate thread, there are one separate TCRPE component for each request.
Do you have any idea of how can I handle this ?
Is CRPE.DLL thread-safe ?
Are there global objects or variables inside CRPE.dll that are not protected from access of multiples threads (like my application) ?
When two or more threads are running reports, are there only one copy of the CRPE.dll in memory ?
when the first thread finish and try to free the TCRPE component, this DLL are unload from memory ?
I Would be very pleased for any help.
Thanks in advance.
(sorry about my miserable English)