¿Qué le sucede a un hilo si está ejecutando un método en un objeto que se liberó al salir de un bloque de uso?
Ejemplo:C# saliendo de un bloque using() con un hilo todavía ejecutándose en el objeto de ámbito
using (SomeObject obj = new SomeObject()) { obj.param = 10 ; Thread newThread = new Thread(() => { obj.Work(); }); newThread.Start(); } ...
obj.Work() se ejecuta en un nuevo hilo, pero obj es un objeto IDisposable que normalmente ser liberado cuando el uso de salidas de bloque. ¿Qué sucede si el hilo continúa ejecutándose después de que finaliza el uso del bloque? ¿Se eliminará el objeto solo después de que se complete el hilo? ¿O se romperá el hilo?
Gracias.
En lugar de tener la instrucción de uso fuera del hilo, póngalo dentro del hilo. Thread newThread = new Thread (() => { usando (SomeObject obj = new SomeObject()) { obj.param = 10; obj.Work(); } }); newThread.Start(); – Relster