Pregunta

Tengo un problema que el número de manijas en mi aplicación está en continuo crecimiento. Hice la depuración y reconocer que esto es causado por clase System.Threading.Thread que se utiliza para alguna rutina. Para simplificar la depuración He creado una aplicación .NET de ejemplo:

    ...

    private void button1_Click(object sender, EventArgs e)
    {
        Thread t = new Thread(DoWork);
        t.Start();
    }

    public void DoWork(object parameter)
    {
        // Do something...
    }

    ...

Cada vez que estoy haciendo clic en el botón, un hilo se crea utilizando la clase System.Threading.Thread. El problema es que se ve como el hilo No libera Manijas, ya que cada número de causa clic de manijas creciente por ~ 5.

La pregunta es: ¿cómo puedo liberar manualmente todas las manijas creados por clase System.Threading.Thread

Gracias de antemano.

¿Fue útil?

Solución

Es en realidad no se escapa de los mangos, es sólo que el GC no los ha recogido aún. Intente cambiar el código en el controlador de botón para que el bucle y crea 500 hilos o algo e intenta presionar un par de veces y probablemente verá mangos están recogiendo.

Otros consejos

no es necesario para liberar manualmente los mangos de rosca, más que soltar todas las referencias a la instancia Thread debería ser suficiente. Teniendo en cuenta que el hilo ya no está en ejecución y todas las referencias a ella se eliminan, el colector gargabe va a liberar las asas de la próxima colección.

En su caso, no se ve como el hilo será nunca acabar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top