private void ReactToPublishableKeyDownStateChanges() { foreach (var key in KeyValues.KeysWhichCanBePressedOrLockedDown .Where(k => k.FunctionKey != null && k.FunctionKey.Value.ToVirtualKeyCode() != null)) { var keyCopy = key; //Access to foreach variable in modified keyStateService.KeyDownStates[key].OnPropertyChanges(s => s.Value) .Subscribe(value => { if (keyStateService.SimulateKeyStrokes) { // ReSharper disable PossibleInvalidOperationException var virtualKeyCode = keyCopy.FunctionKey.Value.ToVirtualKeyCode().Value; // ReSharper restore PossibleInvalidOperationException if (value.IsDownOrLockedDown()) { publishService.KeyDown(virtualKeyCode); } else { publishService.KeyUp(virtualKeyCode); } } }); } }