public void InsertCommand(int index, IMacroCommand command) { lock (commands.SyncRoot) { if (index >= 0) { // Insert item commands.Insert(index++, command); if (pause > 0 && command.CommandType == MacroCommandType.Active) { IMacroCommand waitCmd = new WaitMacroCommand(pause); if (index >= 0) { commands.Insert(index, waitCmd); } else { commands.Add(waitCmd); } } } else { // Add item if (pendingPause && pause > 0) { IMacroCommand waitCmd = new WaitMacroCommand(pause); commands.Add(waitCmd); pendingPause = false; } commands.Add(command); if (command.CommandType == MacroCommandType.Active) { pendingPause = true; } } } }