Problemón con FilesystemWatcher y multithreading

26/04/2005 - 09:27 por Cecilio | Informe spam
Buenas, a ver si a alguien le ha ocurrido algo similar porque a mi este
problema me está dejando perplejo.

Tengo una aplicación, desarrollada en c# con el Framework 1.1, que consiste
en un formulario principal que tiene activado un FileSystemWatcher, este
cada vez que se activa lanza un proceso en un thread aparte que hace una
consulta a una base de datos y los exporta en formato XML.
Esta aplicación, esta ejecutandose siempre en un servidor al que no tiene
acceso ningún usuario (descartemos la acción de una mano "tonta").
Pues bien, cada cierto tiempo , digamos una vez cada diez días más o menos,
el programa se apaga.
Este mismo programa (excepto alguna personalización) , está funcionando
correctamente en otros clientes, sin embargo aquí es la tercera vez que
pasa.
En el Try -Cacht del evento del FileSystemWacher genero un log, pero este
no me indica niguna información.
A primera vista se me ocurren tres posibles causas:
* En los Threads donde se realiza la consulta a la BBDD da un error y se
cuelga. Sin embargo, según tengo entendido, un error no controlado en un
thread provoca que caiga dicho thread, no la aplicación entera (si alguien
me puede confirmar está afirmación se lo agradecería).
* Error del FileSystemWacher. En este cliente hay un mayor volumen de carga
que en los otros. ¿Es posible que esto provoque un error en el componente, o
que genere más threads de los permitidos, y que sea el causante del
problema?
*Bug en el Framework. Tengo instalado el última service pack de la versión
1.1

Muchas gracias y un Saludo.

Preguntas similare

Leer las respuestas

#1 Anonimo
26/04/2005 - 13:49 | Informe spam
Puedes aportar más información sobre la forma de creación
y llamada al Thread ?



Buenas, a ver si a alguien le ha ocurrido algo similar


porque a mi este
problema me está dejando perplejo.

Tengo una aplicación, desarrollada en c# con el


Framework 1.1, que consiste
en un formulario principal que tiene activado un


FileSystemWatcher, este
cada vez que se activa lanza un proceso en un thread


aparte que hace una
consulta a una base de datos y los exporta en formato


XML.
Esta aplicación, esta ejecutandose siempre en un


servidor al que no tiene
acceso ningún usuario (descartemos la acción de una


mano "tonta").
Pues bien, cada cierto tiempo , digamos una vez cada


diez días más o menos,
el programa se apaga.
Este mismo programa (excepto alguna personalización) ,


está funcionando
correctamente en otros clientes, sin embargo aquí es la


tercera vez que
pasa.
En el Try -Cacht del evento del FileSystemWacher genero


un log, pero este
no me indica niguna información.
A primera vista se me ocurren tres posibles causas:
* En los Threads donde se realiza la consulta a la BBDD


da un error y se
cuelga. Sin embargo, según tengo entendido, un error no


controlado en un
thread provoca que caiga dicho thread, no la aplicación


entera (si alguien
me puede confirmar está afirmación se lo agradecería).
* Error del FileSystemWacher. En este cliente hay un


mayor volumen de carga
que en los otros. ¿Es posible que esto provoque un error


en el componente, o
que genere más threads de los permitidos, y que sea el


causante del
problema?
*Bug en el Framework. Tengo instalado el última service


pack de la versión
1.1

Muchas gracias y un Saludo.




.

Respuesta Responder a este mensaje
#2 Cecilio
26/04/2005 - 16:01 | Informe spam
private static void moWatcher_Created(object sender, FileSystemEventArgs e)

{

Thread.Sleep(1000);

try

{

StreamReader srFile = File.OpenText(e.FullPath);

AbrirForm abrirForm = null;

//Para ver el nombre de sesion que esta al final del nombre del fichero
.spool despues del "_"

if (e.Name.IndexOf('_') != -1)

{

abrirForm = new AbrirForm(srFile.ReadToEnd(),

e.Name.Substring(e.Name.IndexOf('_') + 1,

e.Name.Length - e.Name.IndexOf('_') - 7));

}

else

{

abrirForm = new AbrirForm(srFile.ReadToEnd(), "");

}

// Ejecutar el thread encargado de lanzar los forms

Thread tAbrirForms = new Thread(new ThreadStart(abrirForm.abrirForms));

lock (listaThreads)

{

listaThreads.Add(tAbrirForms);

}

tAbrirForms.Start();

while(!tAbrirForms.IsAlive);

Thread.Sleep(1);

// Eliminar fichero

srFile.Close();

//file.Delete();

}

catch

{

}

}



escribió en el mensaje
news:033001c54a56$0b1510e0$
Puedes aportar más información sobre la forma de creación
y llamada al Thread ?



Buenas, a ver si a alguien le ha ocurrido algo similar


porque a mi este
problema me está dejando perplejo.

Tengo una aplicación, desarrollada en c# con el


Framework 1.1, que consiste
en un formulario principal que tiene activado un


FileSystemWatcher, este
cada vez que se activa lanza un proceso en un thread


aparte que hace una
consulta a una base de datos y los exporta en formato


XML.
Esta aplicación, esta ejecutandose siempre en un


servidor al que no tiene
acceso ningún usuario (descartemos la acción de una


mano "tonta").
Pues bien, cada cierto tiempo , digamos una vez cada


diez días más o menos,
el programa se apaga.
Este mismo programa (excepto alguna personalización) ,


está funcionando
correctamente en otros clientes, sin embargo aquí es la


tercera vez que
pasa.
En el Try -Cacht del evento del FileSystemWacher genero


un log, pero este
no me indica niguna información.
A primera vista se me ocurren tres posibles causas:
* En los Threads donde se realiza la consulta a la BBDD


da un error y se
cuelga. Sin embargo, según tengo entendido, un error no


controlado en un
thread provoca que caiga dicho thread, no la aplicación


entera (si alguien
me puede confirmar está afirmación se lo agradecería).
* Error del FileSystemWacher. En este cliente hay un


mayor volumen de carga
que en los otros. ¿Es posible que esto provoque un error


en el componente, o
que genere más threads de los permitidos, y que sea el


causante del
problema?
*Bug en el Framework. Tengo instalado el última service


pack de la versión
1.1

Muchas gracias y un Saludo.




.

Respuesta Responder a este mensaje
#3 Juan Carlos
26/04/2005 - 20:27 | Informe spam
Ya que se esta cerrando la aplicacion, puede que estes capturando una
excepcion en alguna parte y no la estes atrapando.
Cuando inicia la Apliacion create un bloque try catch y captura la exepcion
lanzada desde cualquier parte del codigo y asi puedes registrar el error que
esta sucediendo.

Te sugiero lo siguiente, sin ver tu codigo, reviza la parte donde tomas el
archivo y trata de preguntar si el archivo esta siendo usado en ese momento,
yo he tenido muchos problemas de ese tipo usado filesystemwatcher, ya que
hay archivos muy grandes y al momentos de pasarlos el agente comienza a
trabajar sin que el archivo lo hayan soltado.
Espero te sirva esto.
"Cecilio" escribió en el mensaje
news:%

Buenas, a ver si a alguien le ha ocurrido algo similar porque a mi este
problema me está dejando perplejo.

Tengo una aplicación, desarrollada en c# con el Framework 1.1, que


consiste
en un formulario principal que tiene activado un FileSystemWatcher, este
cada vez que se activa lanza un proceso en un thread aparte que hace una
consulta a una base de datos y los exporta en formato XML.
Esta aplicación, esta ejecutandose siempre en un servidor al que no tiene
acceso ningún usuario (descartemos la acción de una mano "tonta").
Pues bien, cada cierto tiempo , digamos una vez cada diez días más o


menos,
el programa se apaga.
Este mismo programa (excepto alguna personalización) , está funcionando
correctamente en otros clientes, sin embargo aquí es la tercera vez que
pasa.
En el Try -Cacht del evento del FileSystemWacher genero un log, pero este
no me indica niguna información.
A primera vista se me ocurren tres posibles causas:
* En los Threads donde se realiza la consulta a la BBDD da un error y se
cuelga. Sin embargo, según tengo entendido, un error no controlado en un
thread provoca que caiga dicho thread, no la aplicación entera (si alguien
me puede confirmar está afirmación se lo agradecería).
* Error del FileSystemWacher. En este cliente hay un mayor volumen de


carga
que en los otros. ¿Es posible que esto provoque un error en el componente,


o
que genere más threads de los permitidos, y que sea el causante del
problema?
*Bug en el Framework. Tengo instalado el última service pack de la versión
1.1

Muchas gracias y un Saludo.




Respuesta Responder a este mensaje
#4 Cecilio
27/04/2005 - 09:42 | Informe spam
La verdad es que eso tiene bastante sentido, sin embargo lo que no veo claro
es la posible solución a dar.


"Juan Carlos" escribió en el mensaje
news:
Ya que se esta cerrando la aplicacion, puede que estes capturando una
excepcion en alguna parte y no la estes atrapando.
Cuando inicia la Apliacion create un bloque try catch y captura la
exepcion
lanzada desde cualquier parte del codigo y asi puedes registrar el error
que
esta sucediendo.

Te sugiero lo siguiente, sin ver tu codigo, reviza la parte donde tomas el
archivo y trata de preguntar si el archivo esta siendo usado en ese
momento,
yo he tenido muchos problemas de ese tipo usado filesystemwatcher, ya que
hay archivos muy grandes y al momentos de pasarlos el agente comienza a
trabajar sin que el archivo lo hayan soltado.
Espero te sirva esto.
"Cecilio" escribió en el mensaje
news:%

Buenas, a ver si a alguien le ha ocurrido algo similar porque a mi este
problema me está dejando perplejo.

Tengo una aplicación, desarrollada en c# con el Framework 1.1, que


consiste
en un formulario principal que tiene activado un FileSystemWatcher, este
cada vez que se activa lanza un proceso en un thread aparte que hace una
consulta a una base de datos y los exporta en formato XML.
Esta aplicación, esta ejecutandose siempre en un servidor al que no tiene
acceso ningún usuario (descartemos la acción de una mano "tonta").
Pues bien, cada cierto tiempo , digamos una vez cada diez días más o


menos,
el programa se apaga.
Este mismo programa (excepto alguna personalización) , está funcionando
correctamente en otros clientes, sin embargo aquí es la tercera vez que
pasa.
En el Try -Cacht del evento del FileSystemWacher genero un log, pero
este
no me indica niguna información.
A primera vista se me ocurren tres posibles causas:
* En los Threads donde se realiza la consulta a la BBDD da un error y se
cuelga. Sin embargo, según tengo entendido, un error no controlado en un
thread provoca que caiga dicho thread, no la aplicación entera (si
alguien
me puede confirmar está afirmación se lo agradecería).
* Error del FileSystemWacher. En este cliente hay un mayor volumen de


carga
que en los otros. ¿Es posible que esto provoque un error en el
componente,


o
que genere más threads de los permitidos, y que sea el causante del
problema?
*Bug en el Framework. Tengo instalado el última service pack de la
versión
1.1

Muchas gracias y un Saludo.








Respuesta Responder a este mensaje
#5 Juan Carlos
27/04/2005 - 15:02 | Informe spam
Pues yo tampoco he encontrado algun metodo que pregunte esto o que me de
informacion de esto. Lo que me ha tocado es jugar con las excepciones, es
decri cuando el sistema diga o lanze la excepcion The File is using by
another process o algo asi, manejala y dile que lo intente mas tarde...

"Cecilio" escribió en el mensaje
news:%
La verdad es que eso tiene bastante sentido, sin embargo lo que no veo


claro
es la posible solución a dar.


"Juan Carlos" escribió en el mensaje
news:
> Ya que se esta cerrando la aplicacion, puede que estes capturando una
> excepcion en alguna parte y no la estes atrapando.
> Cuando inicia la Apliacion create un bloque try catch y captura la
> exepcion
> lanzada desde cualquier parte del codigo y asi puedes registrar el error
> que
> esta sucediendo.
>
> Te sugiero lo siguiente, sin ver tu codigo, reviza la parte donde tomas


el
> archivo y trata de preguntar si el archivo esta siendo usado en ese
> momento,
> yo he tenido muchos problemas de ese tipo usado filesystemwatcher, ya


que
> hay archivos muy grandes y al momentos de pasarlos el agente comienza a
> trabajar sin que el archivo lo hayan soltado.
> Espero te sirva esto.
> "Cecilio" escribió en el mensaje
> news:%
>>
>> Buenas, a ver si a alguien le ha ocurrido algo similar porque a mi este
>> problema me está dejando perplejo.
>>
>> Tengo una aplicación, desarrollada en c# con el Framework 1.1, que
> consiste
>> en un formulario principal que tiene activado un FileSystemWatcher,


este
>> cada vez que se activa lanza un proceso en un thread aparte que hace


una
>> consulta a una base de datos y los exporta en formato XML.
>> Esta aplicación, esta ejecutandose siempre en un servidor al que no


tiene
>> acceso ningún usuario (descartemos la acción de una mano "tonta").
>> Pues bien, cada cierto tiempo , digamos una vez cada diez días más o
> menos,
>> el programa se apaga.
>> Este mismo programa (excepto alguna personalización) , está funcionando
>> correctamente en otros clientes, sin embargo aquí es la tercera vez que
>> pasa.
>> En el Try -Cacht del evento del FileSystemWacher genero un log, pero
>> este
>> no me indica niguna información.
>> A primera vista se me ocurren tres posibles causas:
>> * En los Threads donde se realiza la consulta a la BBDD da un error y


se
>> cuelga. Sin embargo, según tengo entendido, un error no controlado en


un
>> thread provoca que caiga dicho thread, no la aplicación entera (si
>> alguien
>> me puede confirmar está afirmación se lo agradecería).
>> * Error del FileSystemWacher. En este cliente hay un mayor volumen de
> carga
>> que en los otros. ¿Es posible que esto provoque un error en el
>> componente,
> o
>> que genere más threads de los permitidos, y que sea el causante del
>> problema?
>> *Bug en el Framework. Tengo instalado el última service pack de la
>> versión
>> 1.1
>>
>> Muchas gracias y un Saludo.
>>
>>
>>
>>
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida