gpt4 book ai didi

c# - 第一次按键后暂停,同步解决

转载 作者:太空宇宙 更新时间:2023-11-03 19:38:43 29 4
gpt4 key购买 nike

这里有整个 super 简单的 C# 控制台应用程序:

using System;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int left = 0;
Console.SetCursorPosition(++left, 0);
while (true)
{
ConsoleKeyInfo stisknutaKlavesa = Console.ReadKey(true);

if (stisknutaKlavesa.Key == ConsoleKey.RightArrow)
{
Console.SetCursorPosition(++left, 0);
Console.Write("#");
}
}
}
}
}

描述:当我按下 RIGHT KEY(并按住它!!)时,它会快速写入一个哈希值,然后有一个暂停,然后它会流畅地继续写入另一个哈希值。

我怎样才能摆脱那个停顿?我一直在处理我的一个 winform 应用程序中的相同问题,但为简单起见,我将其发布在此控制台应用程序中。

我找到了一些关于这个主题的答案,但它们都是关于 javascript (jquery) 的,我不明白如何将它应用到我的 c# 项目中。

而且我也不想以异步方式解决它。请问有这样的解决方案吗?

enter image description here

最佳答案

这来自 Windows 控制台(以及 Windows 和其他环境中大多数其他基于文本的输入)的行为方式。如果将光标放在任何文本输入(例如浏览器的地址栏)上,并按住箭头键,您将看到它移动一次,暂停,然后开始重复移动,暂停时间短得多。

实际上,您的控制台的 ReadKey 会根据操作系统的某些预定义行为注册按键。

如果您希望能够检测并响应某人按住某个键,您需要使用一种媒介,让您可以更底层地访问诸如 keydown按键。诸如 Windows Forms、WPF、Unity 之类的东西……几乎所有不是 Console 的东西。

此外,如果您想使用与系统处理这些事件的方式不同的时间来响应这些按键按下和按键事件,您将必须创建自己的计时机制,并且只使用这些事件来帮助你知道什么时候发生了变化。可以找到这方面的例子 herehere .

如果您正在尝试制作类似于视频游戏的东西,您可以考虑研究专门为这些用例设计的库,例如 Unity3D。

关于c# - 第一次按键后暂停,同步解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57513666/

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