相关疑难解决方法(0)

Windows控制台应用程序陷入困境(需要按键)

我有一个控制台程序,其中包含不同的组件,如下所示:

void start() {
while(true){
     DoSomething();
     Thread.Sleep(1000*5);
}
}
Run Code Online (Sandbox Code Playgroud)

我的主要入口点看起来像[伪代码]

Thread.Start(Componenet1.Start);
Thread.Start(Componenet2.Start);

while(true){
     Console.Writeline("running");
     Thread.Sleep(1000*5);
}
Run Code Online (Sandbox Code Playgroud)

在任何地方都没有Console.Reads.我的问题是SOMETIMES应用程序将运行良好,但然后停止,如果我按下窗口上的任何键它将再次开始工作.这种情况很少发生,但我在100+ VM上部署了这个程序,在自动化环境中全天候运行.

另外在电脑上我有一些AHK脚本和其他操纵鼠标的东西,但不确定它是否与它有任何关系.

另请注意,有时CPU可以在机器上以100%的速度运行,因此可能是线程优先级问题?

SOLUTION:您需要禁用快速编辑模式.这是使用C#代码执行此操作:

 // 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);
Run Code Online (Sandbox Code Playgroud)

c# automation console-application

35
推荐指数
1
解决办法
6492
查看次数

标签 统计

automation ×1

c# ×1

console-application ×1