Hola foro
tengo la siguiente duda, que no he podido resolver a ver si alguno de ustedes tiene una idea.
tengo un proceso que recibe parametros (de varios tipos) y que debe ser ejecutado varias veces en forma ciclica durante el dia.
para esto, se desarrollo un servicio windows que corre en un server.
el prococeso demora alrededor de 2 horas en ejecutarse, ya que es una gran cantidad de data que se analiza y transforma.
el proceso tambien parte si iy solo si existen ciertas condiciones (archivos puestos en una ubicacion por otros servicios, ect)
la dificultad radica en la ejecucion, ya que para optimizar el tiempo y aprovechar los multiples nucleos de la maquina (4) se requiere que estos procesos sean ejecutados en forma simultanea en hilos distintos
basicamente la ejecucion esta de la siguiente forma
Código:
// crea un ciclo de ejecucion se acuerdo a las interfaces a procesar
List<String> lsInterfacesProcesables = cConfigura.lsObtieneListaInterfaces(true);
// crea instancias
foreach (String sInterface in lsInterfacesProcesables)
{
Thread t1 = new Thread(() => EjecutarInterface(sInterface, cConfigura, dtFechaProceso, cLog));
t1.Start();
}
los parametros son:
sInterface : tipo string, identifica al producto
cConfigura: un objeto que contiene toda la configuracion necesaria para el procesamiento del producto
dtFechaProceso: tipo DateTime, indica la fecha de procesamiento
cLog: objeto que contendra el log de ejecucion
lo que hice fue crear una expresion lambda que pasara como parametros al objeto instanciado que ejecuta el proceso.
los problemas de esta forma de ejecucion son 2.
1.- necesito instanciar multiples veces el mismo objeto, pasandole parametros distintos, y esto requiero hjacerelo en hilos separados.
2.- necesito saber el estado de ejecucion de dichos procesos, para que una vez terminados pueda volver a lanzarlos. si es que ya ha terminado la ejecucion del proceso, y en caso contrario esperar una cantida determinada de tiempo para preguntar nuevamente por el estado.
espero que haber sido claro en el planteamiento de mi problema
cualquier comentariosera de mucha ayuda
gracias
plch