public void CancelProcess(AbstractBackgroundProcess process) { lock(activeProcesses) if (activeProcesses.Contains(process) && threadLookup[process].IsAlive) { threadLookup[process].Abort(); activeProcesses.Remove(process); threadLookup.Remove(process); } }