Foros del Web » Programación para mayores de 30 ;) » .NET »

Sugerencia.

Estas en el tema de Sugerencia. en el foro de .NET en Foros del Web. Hola Colegas, me gustaría recibir sus sugerencias respecto a lo siguiente: Tengo una aplicación Windows Form en la cual genero PDF's, supongamos que tengo los ...
  #1 (permalink)  
Antiguo 27/07/2009, 09:54
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Pregunta Sugerencia.

Hola Colegas, me gustaría recibir sus sugerencias respecto a lo siguiente:
Tengo una aplicación Windows Form en la cual genero PDF's, supongamos que tengo los PDF's de:

Clientes (1000 PDF’s)
Proveedores (900 PDF’s)
Acreedores (150 PDF’s)
Artículos (2500 PDF’s)

La cantidad varia mes con mes, entonces, me gustaría saber que me sugieren para levantar un hilo (que metodología puedo usar) para cada bloque de PDF's por ejemplo un hilo para los pdf's de clientes, otro para proveedores y así sucesivamente.

Porque el problema que tengo es que cuando son mas de 400 o 500 PDF’s estos se empiezan a crear borrosos o difuminados como si les hubiesen pasado un borrador sobre ellos entonces no se si levantando un hilo para cada proceso me ayude a solucionar eso.

Muchas gracias.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #2 (permalink)  
Antiguo 27/07/2009, 14:57
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: Sugerencia.

Si levantas un hilo para cada uno e intentas largar todos los procesos juntos me parece que vas a estar en la misma.

Me parece que el tema de que se te vean borrosos los pdf no tiene que ver con el rendimiento o que tengas muchos procesos corriendo. Fijate si no es algo que pase solo en la computadaro que estas usando.
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #3 (permalink)  
Antiguo 27/07/2009, 15:45
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Sugerencia.

Gracias Tula, ya lo intente de varias maneras y el detall es que no siempre salen borrosos, es decir, los corro una vez, salen borrosos, reinicio la maquina, salen bien, ejecuto el que sigue, sale borroso, entonces no se si sea porque el motor del Crystal del Acrobat se saturan, no se, no entiendo el porque……

Este es el código que utilizo para generar los PDF’s
Código:
ReportDocument rptDocument = new ReportDocument();
rptDocument.Load("NombreDePDF);
rptDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "Destino");
rptDocument.Dispose();
La otra es que los recursos de la pc se agoten, acabo de hacer la pregunta de que si alguien sabe como le puedo hacer para que la aplicación utilice los recursos del servidor, es decir, yo instalo la aplicación en el servidor, al usuario le creo un acceso directo y todo bien pero utiliza los recursos de la maquina y no se que pueda hacer para utilizar los del servidor donde se instalo.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #4 (permalink)  
Antiguo 27/07/2009, 18:26
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: Sugerencia.

Hola amigo.

Vos sabes que eso es raro, porque yo pienso que supongamos que se te sature a full el server, a lo sumo lo que te pasaría es que te tardaría más en terminar el proceso, pero en cuanto a la calidad del pdf no te tendría porque varíar para nada. Por lo que veo tu código está bien. Lo único que se me ocurre es que al final de crear el pdf te asegures que estás cerrando todo lo que usas (como haces en el código donde pones el .disponse)

Algo que probaría es meter una pausa de dos segundos (sleep) al final de cada creación de pdf.
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #5 (permalink)  
Antiguo 28/07/2009, 11:41
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Sugerencia.

Pues si es raro :=) alguna otra idea, sugerencia?
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #6 (permalink)  
Antiguo 28/07/2009, 11:47
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Sugerencia.

Desde la primer vez que planteaste la problematica discutimos el que usaras un ThreadPool a mi parecer es la opcion para optimizar el uso de recursos y no estar recargando tus archivos de reportes si vas a generar 1k veces el mismo reporte (con el mismo rpt) no hay que cargarlo 1000 veces.

hay que ve mas codigo para analizar por donde pegarle, y usar el servidor en todo caso usa un servicio o un proceso remoto que haga el proceso en tu servidor, pero si tu codigo no esta optimizado asi este en una cluster le pasara lo mismo.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #7 (permalink)  
Antiguo 28/07/2009, 14:41
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Sugerencia.

Órale apoco todavía te acuerdas!! no pues gracias por acordarte

Si, estoy tratando de hacer un ThreadPool para cada bloque de reportes para que se use un Thread del Pool por cada reporte, sabes de alguna buena practica para hacerlo?

Como lo genero es de la siguiente manera, ejecuto un SP que me trae cierta cantidad de registros (100, 500, 3000) y luego ese resultado lo pongo en un DataTable y invoco un método y le mando la DataTable y dentro de este hago esto:

Código:
private void CrearArchivosPDF(string dtRpt)
{

 for (int i = 0; i < dtRpt.Rows.Count; i++)
 {
    //Crea PDF de un reporte de Crystal.
    NomPDF = “2009” + "_" + i  ".pdf";

    ReportDocument rptDocument = new ReportDocument();
    rptDocument.Load(Settings.Default.PathReportes + “Reporte.pdf”);
    rptDocument.ExportToDisk(ExportFormatType.PortableDocFormat, NomPDF);
    rptDocument.Dispose();
 }

}
Entonces, aquí es donde quiero meter el ThreadPool y pues que trabaje generando los PDF's, por cada vuelta del for me gustaría levantar un Thread del Pool .

Que opinas Brother?.
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
  #8 (permalink)  
Antiguo 30/07/2009, 07:37
Avatar de mvazquez  
Fecha de Ingreso: octubre-2004
Ubicación: Monterrey - México
Mensajes: 875
Antigüedad: 19 años, 6 meses
Puntos: 8
Respuesta: Sugerencia.

Mejores practicas para ThreadPool ?? (sugerencias, tips, etc., etc.)
__________________
http://vazquezvega.wordpress.com/
"La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás."
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:26.