Есть такой код:
int Switch5 = ProcessMemoryReaderApi.GetKeyState(0xA1);
if ((Switch5 & 0x8000) != 0)
{
act = !act;
if (act)
Console.WriteLine("true");
else Console.WriteLine("false");
}
При нажатии клавиши SHIFT - программа заходит сюда. Но! Если его держать и не отпускать - bool act быстро изменяется с false на true. Как можно сделать так, чтобы при нажатии shift act была true, даже в том случае, если его держать постоянно? А при нажатии на shift ещё раз - переменная изменялась на false
Как насчет самой простой защиты
private volatile bool _IAmWorking;
public void KeyEventHandler(EventArgs event)
{
if (_IAmWorking) return;
_IAmWorking = true;
......
_IAmWorking = false;
}
Для однопоточного варианта, вы можете отследить, когда кнопка была нажата и когда отжата
private bool _canRunLogic = true;
public void ShiftKeyDownEventHandler(EventArgs event)
{
if (!_canRunLogic) return;
_canRunLogic = false;
......
}
public void ShiftKeyUPEventHandler(EventArgs event)
{
_canRunLogic = true;
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости