private static void ProcInterrupt() { _signal_interrupt.Set(); if (_interrupt_delegate != null) { _interrupt_delegate(); _interrupt_delegate = null; } HotKeyGlobal.UnsubscribeAll(); }
public static void Wait(int timems) { HotKeyGlobal.SubscribeAll(); _signal_interrupt.Reset(); bool signaled = _signal_interrupt.WaitOne(timems, true); if (signaled) { throw new Errors.KeyboardInterruptError(); } HotKeyGlobal.UnsubscribeAll(); }
static SysWaiter() { string user = Environment.UserDomainName + "\\" + Environment.UserName; var rule = new EventWaitHandleAccessRule(user, EventWaitHandleRights.FullControl, AccessControlType.Allow); var security = new EventWaitHandleSecurity(); security.AddAccessRule(rule); bool createdNew; _signal_interrupt = new EventWaitHandle(false, EventResetMode.ManualReset, @"Global\InterruptKey", out createdNew, security); HotKeyGlobal.DefineHotKey(MOD_NONE, VK_ESCAPE, ProcInterrupt); }