tecla - consolekeyinfo c#
La aplicaciĆ³n de la consola de Windows se atasca(se necesita presionar una tecla) (1)
Esta pregunta ya tiene una respuesta aquí:
Tengo un programa de consola que tiene diferentes componentes que se ejecutan así:
void start() {
while(true){
DoSomething();
Thread.Sleep(1000*5);
}
}
Mi punto de entrada principal se ve como [código pseudo-ish]
Thread.Start(Componenet1.Start);
Thread.Start(Componenet2.Start);
while(true){
Console.Writeline("running");
Thread.Sleep(1000*5);
}
No hay consola. Lee en ningún lado. Mi problema es A VECES que la aplicación se ejecutará muy bien, pero luego se detiene y si presiono cualquier tecla en la ventana, comenzará a funcionar nuevamente. Esto sucede con poca frecuencia, pero tengo este programa implementado en más de 100 máquinas virtuales que se ejecutan 24/7 en un entorno automatizado.
También en la computadora tengo algunos scripts de AHK y otras cosas que manipulan el mouse, pero no estoy seguro de si eso tiene algo que ver con eso.
También tenga en cuenta que a veces la CPU puede estar funcionando al 100% en las máquinas, ¿por lo que tal vez la prioridad de los hilos sea un problema?
SOLUCIÓN : necesitas deshabilitar el modo de edición rápida. Aquí está trabajando el código C # para hacer esto:
// http://msdn.microsoft.com/en-us/library/ms686033(VS.85).aspx
[DllImport("kernel32.dll")]
public static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);
private const uint ENABLE_EXTENDED_FLAGS = 0x0080;
static void Main(string[] args)
{
IntPtr handle = Process.GetCurrentProcess().MainWindowHandle;
SetConsoleMode(handle, ENABLE_EXTENDED_FLAGS);
Si el usuario hace clic accidentalmente en la ventana de la consola negra, el cursor cambia a un rectángulo blanco relleno y la aplicación se cuelga en la siguiente declaración de Console.Write, hasta que se haga otro clic.
Es una característica genérica de la ventana de la consola cuando su "Modo de edición rápida" está habilitado.
Para deshabilitar esa función, debe desmarcar la opción "Modo de edición rápida" de la ventana de la consola de su aplicación en tiempo de ejecución.