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? 

Responder a