Tengo un hilo administrado que está esperando, bloqueado, en un código no administrado (específicamente, en una llamada a NamedPipeServerStream.WaitForConnection() que finalmente llama al código no administrado, y no ofrecen un tiempo de espera).¿Cómo finalizar un hilo gestionado bloqueado en código no administrado?
Quiero cerrar el hilo cuidadosamente.
Thread.Abort() no tiene efecto hasta que el código regrese al dominio administrado, lo que no ocurrirá hasta que un cliente haga una conexión, lo cual no podemos esperar.
Necesito una forma de "sacudirlo" del código no administrado; o una forma de simplemente matar el hilo, incluso mientras está en tierra no administrada.
¿Alguna razón por la que no está usando NamedPipeServerStream.BeginWaitForConnection() en su lugar? – SpaceghostAli
Básicamente porque el hilo desea esperar "para siempre" para una conexión (a menos que se cierre). Con Begin/End WaitForConnection, tendría que comenzar, esperar un segundo, verificar la conexión o el tiempo de espera, y repetir el tiempo de espera. –
Ok, lo entiendo. Bueno, una pequeña modificación a la respuesta de dtb debería darle lo que necesita. En lugar de esperar en asyncResult, espere en un WaitHandle compartido que configure desde el código que desea abortar el hilo. – SpaceghostAli