private const int keyCooldownTime = 75;//ms public KeyRepaintQueue(CancellationToken token) { KeyInfo = new KeyBitmapHolder[HidClient.numOfKeys]; allWaitHandles = new WaitHandle[HidClient.numOfKeys + 1]; for (int i = 0; i < 15; i++) { var holder = new KeyBitmapHolder(); KeyInfo[i] = holder; allWaitHandles[i] = holder.dirtyEvent; } allWaitHandles[exitCode] = token.WaitHandle; cancelWaitHandle = token.WaitHandle; }
public void Enqueue(int keyId, byte[] data) { lock (listLock) { if (keyIndex[keyId] == null) { //enque keyQueue.Enqueue(keyId); keyIndex[keyId] = new KeyBitmapHolder(); waiter.Release(); } //update keyIndex[keyId].bitmapData = data; } }