private void cancelOperation(ExternalProcess.AsyncTaskDescriptor descriptor)
        {
            if (descriptor == null)
            {
                return;
            }

            descriptor.Cancelled = true;
            try
            {
                ExternalProcess.Cancel(descriptor.Process);
            }
            catch (InvalidOperationException)
            {
                // process already exited
            }
        }