/// <summary>
        /// Stops capturing images for the given render job.
        /// </summary>
        /// <param name="cancelRequest">The message containing the canceled render job's GUID.</param>
        private void HandleCancelRequest(RCS_Render_Job_Cancel cancelRequest)
        {
            ScreenCapture capturer = null;

            lock (this.runningRenderJobs)
            {
                if (!this.runningRenderJobs.ContainsKey(cancelRequest.ConcernedRenderJobID))
                {
                    return;
                }

                capturer = this.runningRenderJobs[cancelRequest.ConcernedRenderJobID];
            }

            capturer.StopCapture();

            lock (this.runningRenderJobs)
            {
                this.runningRenderJobs.Remove(cancelRequest.ConcernedRenderJobID);
            }
        }
        public void CancelRenderJob()
        {
            this.Working = false;

            RCS_Render_Job_Cancel cancelRequest = new RCS_Render_Job_Cancel(CancelRenderJobReason.Manually, Configuration.RenderJobID, RemoteType.Client);

            this.socketHandler.SendMessage(MessageCode.MC_Render_Job_Cancel, Remote_Content_Show_MessageGenerator.GetMessageAsByte(cancelRequest));
            this.socketHandler.Close();

            this.socketHandler.OnMessageBytesReceived -= this.SocketHandler_OnMessageBytesReceived;
            this.socketHandler.OnConnectionLost -= this.SocketHandler_OnConnectionLost;
        }