private string GetSaveFolder(RemoteControlFrame frame)
 {
     return(Path.Combine(
                HostingEnv.ContentRootPath,
                "Recordings",
                frame.StartTime.Year.ToString().PadLeft(4, '0'),
                frame.StartTime.Month.ToString().PadLeft(2, '0'),
                frame.StartTime.Day.ToString().PadLeft(2, '0'),
                frame.MachineName,
                frame.ViewerID,
                frame.StartTime.ToString("HH.mm.ss.fff")));
 }
        internal void SaveFrame(byte[] frameBytes, int left, int top, int width, int height, string viewerID, string machineName, DateTimeOffset startTime)
        {
            var rcFrame = new RemoteControlFrame(frameBytes, left, top, width, height, viewerID, machineName, startTime);

            FrameQueue.Enqueue(rcFrame);

            lock (LockObject)
            {
                if (ProcessingTask?.IsCompleted ?? true)
                {
                    ProcessingTask = Task.Run(new Action(StartProcessing));
                }
            }
        }