que metodo method how example c# .net idisposable

method - metodo dispose() c#



¿Qué hace Process.Dispose() realmente? (2)

¿Realmente necesito Dispose() todos los objetos de Process y cómo decido si necesito hacerlo?

Sí, deberías desecharlos. Tenga en cuenta este texto en la documentación para el Process :

Un proceso del sistema se identifica de forma única en el sistema por su identificador de proceso. Al igual que muchos recursos de Windows, un proceso también se identifica por su identificador, que podría no ser exclusivo en la computadora. Un identificador es el término genérico para un identificador de un recurso. El sistema operativo persiste el identificador del proceso, al que se accede a través de la propiedad Manejar del componente Proceso, incluso cuando el proceso ha finalizado. Por lo tanto, puede obtener la información administrativa del proceso, como ExitCode (generalmente cero para el éxito o un código de error distinto de cero) y ExitTime. Las asas son un recurso extremadamente valioso, por lo que las asas con fugas son más virulentas que las fugas de memoria.

Por lo tanto, si no los Dispose , es posible que se estén filtrando las asas (hasta que se recojan los residuos, pero el objetivo principal de Dispose es permitir la limpieza temprana de los recursos)

Tenga en cuenta, también, que la misma documentación indica que el Process anula a Dispose(bool) , otra pista de que realmente hace algo cuando se llama Dispose .

En la class Process C # El class Process hereda de la class Component que implementa IDisposable y, por lo tanto, puedo llamar a Dispose() en cualquier objeto de Process . ¿Realmente tengo que hacerlo? ¿Cómo puedo saber si realmente tengo que hacerlo?

Supongamos que tengo el siguiente código:

var allProcesses = System.Diagnostics.Process.GetProcesses(); var processesNames = processes.Select( p => p.ProcessName ); // output process names here

Ahora parece que tengo una matriz de objetos de Process y tengo un try-finally atravesar la matriz y Dispose() cada objeto. Eso es definitivamente un montón de código extra.

¿Qué hace eso Dispose() para Process objetos? ¿Realmente necesito Dispose() todos los objetos de Process y cómo decido si necesito hacerlo?


de MSDN: http://msdn.microsoft.com/en-us/library/3cc9y48w(v=vs.80).aspx

Llame a Desechar cuando haya terminado de usar el Componente. El método Dispose deja el componente en un estado inutilizable. Después de llamar a Dispose, debe liberar todas las referencias al Componente para que el recolector de basura pueda reclamar la memoria que el Componente estaba ocupando.