Stampa report in multi threading

mercoledì 16 febbraio 2011 - 12.36
Tag Elenco Tags  VB.NET  |  .NET 2.0  |  .NET 3.0  |  .NET 3.5  |  .NET 4.0  |  Windows Server 2008 R2  |  Windows XP  |  Visual Studio 2005  |  SQL Server 2008 R2  |  Internet explorer 8.0  |  Crystal Reports XI

Simone83 Profilo | Newbie

Ciao a tutti

ho sviluppato un applicazione che alla fine deve stampare ed inviare via mail (in formato pdf) dei documenti .
Attualmente le varie sub sono in sequenza , quindi , lancia la stampa , finisice la stampa , lancio l'export del report ed invio la mail (in alcuni casi l'invio deve essere anche doppio ma con indirizzi diversi).

Tutto questo si traduce nel fatto che per ogni ciclo completo impiega anche oltre 1 minuto , senza contare che se l'utente clicca in giro nell'attesa o si mette a fare qualcos'altro si blocca anche.

Vorrei sapere se è possibile gestire i thread anche per i report in modo da lanciare stampa e 2 export contemporaneamente dallo stesso report , ho impostato la gestione secondo una guida trovata in internet e il programma arriva correttamente a lanciare le 2 sub contemporaneamente ma si blocca (bloccando l'esecuzione del codice vedo che si è fermato con la riga verde sul tentativo di aprire il report) quando cerca di aprire lo stesso report che è in stampa dall'altro thread.Ovviamente senza thread la stessa sub lanciata singolarmente funziona.


Qualche info aggiuntiva :
- Il progetto è sviluppato in visual basic .net 2005
- la versione di crystal report che uso è la XI release 2
- i file di report sono salvati in una cartella condivisa del server (quindi si presuppone che debbano essere stampati in contemporanea da più client)


Spero che possiate aiutarmi

Grazie

Simone

freeteo Profilo | Guru

>del codice vedo che si è fermato con la riga verde sul tentativo
>di aprire il report) quando cerca di aprire lo stesso report
>che è in stampa dall'altro thread.Ovviamente senza thread la
>stessa sub lanciata singolarmente funziona.
ricordo che c'è un overload del metodo "OpenReport" con un parametro che dice la modalità (un enum) dove puoi dirgli "OpenReportByTempCopy":
ReportDocument report = new ReportDocument(); report.Load("", OpenReportMethod.OpenReportByTempCopy); ...
guarda se questo ti può aiutare a non locckare il file.



Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Simone83 Profilo | Newbie

Ciao

Avevo già risolto usando il background worker invece dei thread , però uso anche la tua soluzione perchè di sicuro riduce il margine di errore.

Grazie

Simone
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5