gpt4 book ai didi

c# 在不停止应用程序的情况下读取用户输入

转载 作者:太空狗 更新时间:2023-10-29 21:19:58 24 4
gpt4 key购买 nike


我知道我可以为此使用 ReadKey,但它会卡住应用程序,直到用户按下一个键。是否有可能(在控制台应用程序中)运行一些循环并且仍然能够使用react?我只能想到事件,但不确定如何在控制台中使用它们。我的想法是循环会在每次迭代期间检查输入。

最佳答案

他们为我自己的应用程序做这件事的方式是有一个专用线程调用 System.Console.ReadKey(true) 并将按下的键(和任何其他事件)放入消息队列。

然后主线程在循环中为该队列提供服务(类似于 Win32 应用程序中的主循环),确保渲染和事件处理全部在单个线程上处理。

private void StartKeyboardListener()
{
var thread = new Thread(() => {
while (!this.stopping)
{
ConsoleKeyInfo key = System.Console.ReadKey(true);
this.messageQueue.Enqueue(new KeyboardMessage(key));
}
});

thread.IsBackground = true;
thread.Start();
}

private void MessageLoop()
{
while (!this.stopping)
{
Message message = this.messageQueue.Dequeue(DEQUEUE_TIMEOUT);

if (message != null)
{
switch (message.MessageType)
{
case MessageType.Keyboard:
HandleKeyboardMessage((KeyboardMessage) message);
break;
...
}
}

Thread.Yield(); // or Thread.Sleep(0)
}
}

关于c# 在不停止应用程序的情况下读取用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3931258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com