Provocar un retardo temporal

09/12/2004 - 18:45 por Jordi Julià | Informe spam
Hola a todos,

Como podría provocar un retardo temporal programando en VB.NET y WebForms.

Querría hacer que en un momento dado el procedimiento esperase 30 segundo y
siguiera, podría hacer un bucle y después continuar pero esto produciria un
gasto de CPU inútil (For I=0 to 30000:Next)

Gracias

Preguntas similare

Leer las respuestas

#6 Pedro Luna Montalvo
16/12/2004 - 14:22 | Informe spam
Ok, ahora entiendo tu situacion.

De todas formas, como indicas que la solucion te resulta, imagino que ya has
comprobado que no hay riesgo de colapsar el servidor por los recursos que
consume la generacion de solamente uno de esos informes. Imagino que no
esperas tener muchos usuarios concurrentes.

De todas formas, si luego tienes problemas de rendimiento por tu estrategia,
te dejo una alternativa adicional:

No se que tipo de reporte sea el que imprimes, Crystal o algun otro tipo;
pero podrias guardar los datos que requiere el reporte en algun repositorio
de datos, o si los datos no varian, guardar un "comando" en alguna tabla que
indique el reporte que quieres imprimir.

Por otro lado, un servicio cada cierto tiempo puede leer si hay algun dato
de reporte o comando de emision de reporte listo, y proceder con el mismo.
Asi el servicio se encarga de esta tarea y no tendrias el problema de que el
spool colapse. Seria el servicio el encargado de manejar esta situacion.

De todas formas, saludos y suerte

Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu
Respuesta Responder a este mensaje
#7 Jordi Julià
16/12/2004 - 22:31 | Informe spam
Hola Pedro,

Mi problema era el siguiente: la impresión de la renovación de pólizas de
una cartera de una mutua de seguros (unos 3000 ejemplares por seis cópias,
por necesidades de la impresora cada copia debe ser un archivo en el spool,
ya tiene ... la impresora), el aplicativo procesa archivos de spool mucho
más rápido que la impresora imprimiendolos. Debido a la complejidad del
informe (realizado con Crystal) con un promedio de 15 hojas por informe
acaba agotando la capidad máxima del spool del servidor, da un mensaje y
para el spool y la impresión.

Como comprenderás, este tipo de impresión la procesamos por la noche y tiene
todo el ordenador para el solito, debido a que no se como se puede cambiar
los atributos del spool (si se puede) y tampoco me interesa averiguarlo en
estos momentos, opté por provocar un retardo de tiempo cuando se genera un
informe dando tiempo a la impresora a imprimirlo, reconozco que no es la
solución perfecta (¡ a grandes males, grandes remedios ! ) pero ha sido
rápido y ha sido una gozada llegar por la mañana y ya estar todo impreso (
me he ganado 10 puntos ).

La solución que aportabas me la he reservado para otra problematica en la
que me tengo que poner dentro de poco..

Gracias y Saludos
Jordi


"Pedro Luna Montalvo" escribió en el
mensaje news:
Ok, ahora entiendo tu situacion.

De todas formas, como indicas que la solucion te resulta, imagino que ya
has
comprobado que no hay riesgo de colapsar el servidor por los recursos que
consume la generacion de solamente uno de esos informes. Imagino que no
esperas tener muchos usuarios concurrentes.

De todas formas, si luego tienes problemas de rendimiento por tu
estrategia,
te dejo una alternativa adicional:

No se que tipo de reporte sea el que imprimes, Crystal o algun otro tipo;
pero podrias guardar los datos que requiere el reporte en algun
repositorio
de datos, o si los datos no varian, guardar un "comando" en alguna tabla
que
indique el reporte que quieres imprimir.

Por otro lado, un servicio cada cierto tiempo puede leer si hay algun dato
de reporte o comando de emision de reporte listo, y proceder con el mismo.
Asi el servicio se encarga de esta tarea y no tendrias el problema de que
el
spool colapse. Seria el servicio el encargado de manejar esta situacion.

De todas formas, saludos y suerte

Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu


Respuesta Responder a este mensaje
#8 Anonimo
21/12/2004 - 15:46 | Informe spam
puedes aportar codigo ?
Hola Pedro,

El retardo lo quiero provocar en el servidor, y el


motivo es: tengo una
página que puede generar un montón de informes (se


podría diseñar de alguna
otra manera, pero por necesidades extra-informáticas


esta así), debido a la
cantidad de informes que se generan se colapsa el spool


del servidor. Ya se
que es una solución muy "heavy" pero resulta efectiva:


provocar un retardo
de 30 segundos cada vez que se genera un informe para


dar tiempo a la
impresora a ir vaciando el spool.

La solución que aporto Miquel Angel (Thread.Sleep


(30000)) la he probado y me
ha solucionado el problema.

Muchas garcias
Saludos
Jordi




"Pedro Luna Montalvo, MVP"


escribió en
el mensaje news:
Saludos Jordi:

Una pregunta, cual seria tu necesidad de provocar un




retraso de 30
segundos
en una aplicacion Web!!!!

Otro asunto es que no has aclarado si quieres provocar




el retardo en el
servidor o en el cliente.


Saludos
Pedro Luna, [MVP VB.NET]
Gye, Ecu

"Jordi Julià" escribió en el




mensaje
news:%
> Hola a todos,
>
> Como podría provocar un retardo temporal programando




en VB.NET y
WebForms.
>
> Querría hacer que en un momento dado el




procedimiento esperase 30
segundo
> y
> siguiera, podría hacer un bucle y después continuar




pero esto produciria
> un
> gasto de CPU inútil (For I=0 to 30000:Next)
>
> Gracias
>
>
>






.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida