que tienen un programa de consola que tiene diferentes componentes que se ejecutan como esto:aplicación de consola de Windows se queda pegada (necesidades clave Press)
void start() {
while(true){
DoSomething();
Thread.Sleep(1000*5);
}
}
Mi punto de entrada principal se parece a [código de pseudo-ish]
Thread.Start(Componenet1.Start);
Thread.Start(Componenet2.Start);
while(true){
Console.Writeline("running");
Thread.Sleep(1000*5);
}
No hay Console.Reads en cualquier lugar. Mi problema es A VECES la aplicación se ejecutará bien, pero luego se detiene y si presiono cualquier tecla en la ventana, comenzará a funcionar de nuevo. Esto ocurre con poca frecuencia, pero tengo este programa implementado en más de 100 máquinas virtuales que funcionan 24/7 en un entorno automatizado.
También en la computadora tengo algunas secuencias de comandos AHK y otras cosas que manipulan el mouse pero no estoy seguro si eso tiene algo que ver con eso.
También tenga en cuenta que a veces la CPU realmente se puede ejecutar al 100% en las máquinas, por lo que tal vez la prioridad de la rosca sea un problema.
SOLUCIÓN: Necesita desactivar el modo de edición rápida. Aquí está trabajando 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);
intenta hacer un comentario 'DoSomething();' y ver si se comporta igual – Andrey
La respuesta en el código C# no parece funcionar. La respuesta aceptada a continuación sí. – liang
El código de C# no funciona para mí. Una solución de trabajo se puede encontrar aquí: https://stackoverflow.com/a/36720802/1999917 –