private void Reset() { lock (queue) { if (user_job != null) { user_job.CancelRequested -= OnCancelRequested; user_job.Finished -= OnFinished; user_job.Finish(); user_job = null; } if (transcoder != null) { transcoder.Finish(); transcoder = null; } foreach (TranscodeContext context in queue) { context.CancelledHandler(); } if (transcoding) { current_context.CancelledHandler(); transcoding = false; } queue.Clear(); } }