Federico, Otra cosa que sugeriría es simplemente mirar el estado de los threads en un debugger. Examiná el call stack de cada uno de los threads y la cadena de llamadas. Es muy probable que se pueda obtener una pista de que está haciendo la aplicación en el momento en que demora en cerrarse. Una vez que obtengas esa información, los pasos a seguir probablemente sean mucho más claros.
Yo no ví el thread que menciona Carlos, pero si el problema también se manifiesta en el Dispose, prestá especial atención al Finalizer thread. Este es el thread que se encarga de ejecutar los Finalizers de los objetos. Podría ser que alguno de ellos esté ejecutando alguna operación que bloquea el thread en este método, aunque deberías tener indicaciones de que algo anda mal aún antes de cerrar la aplicación, ya que si no se pueden finalizar los objetos, el uso de memoria debería empezar a crecer. Saludos, Fernando Tubio ----- Original Message ----- From: Carlos Peix To: puntonet@mug.org.ar Sent: Wednesday, February 04, 2009 5:08 PM Subject: [puntonet] .NET Profiler o Trace Hola Federico, Hace tres semanas consultaste con el asunto "Dispose consume mucho tiempo.", recien ahora me doy cuenta. Que paso con las cosas que te recomendamos probar? Alguien te recomendo aislar el problema y enviar algo de codigo a la lista pero no vi respuesta luego de ese mail. Alguien tambien sugirio referencias cruzadas entre los dos forms que mencionaste en ese momento. Que paso con esas pruebas? El motivo puede ser tan sutil que es muy dificil ayudarte a encontrar el problema, lo unico que podemos hacer es indicarte cuales son las cosas que no deberias hacer. Carlos Peix ------------------------------------------------------------------------------ De: puntonet@mug.org.ar [mailto:punto...@mug.org.ar] En nombre de Federico Lazarte Enviado el: Miércoles, 04 de Febrero de 2009 05:29 p.m. Para: puntonet@mug.org.ar Asunto: [puntonet] .NET Profiler o Trace Realize eun log en la apicacion. Entre la ultima linea del Form_Closing y el Dispose del Formulario, hay 4 minutos que no se que es lo qe esta realizando la aplicacion. Muy extraño. Pauso la ejecucion del app y se situa en la linea del Main: /// <summary> /// The main entry point for the application. /// </summary> [STAThread] private static void Main() { Application.Run(new Form1()); } ------------------------------------------------------------------------------ Date: Wed, 4 Feb 2009 14:00:24 -0200 Subject: [puntonet] .NET Profiler o Trace From: conta...@darioquintana.com.ar To: puntonet@mug.org.ar +1 a lo que dice Carlos. Un debug/log a base de "printf()" desarrolla caracter :-) 2009/2/4 Carlos Peix <peix-lis...@praxia.com.ar> Hola Federico, Esas herramientas que mencionas suelen usarse para optimizacion de una aplicacion (para buscar cuales son los puntos mas utilizados y optimizarlos). Creo que tu caso es diferente, si los tiempos involucrados son tan grandes creo que te convendria identificar con un sumple trace o log donde se va el tiempo. Quiero decir, si tenes la herramienta y sabes usarla, probablemente te convenga empezar por ahi, pero si no la tenes me parece mejor recurrir a las herramientas mas simples. Un saludo Carlos Peix ---------------------------------------------------------------------------- -- Dario Quintana http://darioquintana.com.ar ------------------------------------------------------------------------------ ¡Conocé el nuevo Calendario de Windows Live! ¿Querés tener un 2009 más organizado?