/// <summary> /// Upload your screenshot here /// </summary> /// <param name="upload">image data and meta data</param> public void Upload(ImageUpload upload) { Debug.WriteLine("ScreenShotReceiver.Upload entered " + DateTime.Now); TextAnalysis.Init(); if (upload == null) { Debug.WriteLine("upload is null"); throw new ArgumentNullException("upload is null"); } //rethread here so that the client is never waiting for analysis completion. new Thread(() => RethreadedUpload(upload)).Start(); }
private void RethreadedUpload(ImageUpload upload) { Debug.WriteLine("ScreenShotReceiver.RethreadedUpload entered {0}", DateTime.Now); try { ScreenShotDataAdapter dataLayer = new ScreenShotDataAdapter(); //only process if the user is monitored var user = dataLayer.GetUserByName(upload.UserID); if (user != null && user.isMonitored) { //load image using (MemoryStream stream = new MemoryStream(upload.ImageData)) using (Image image = Bitmap.FromStream(stream)) { //Analyze the image for to see if it violates any triggers ProcessImage((Bitmap)image, upload.UserID, upload.CaptureTime, dataLayer); //send image to database dataLayer.SaveImage(image, upload.UserID, upload.CaptureTime); } } else { Debug.WriteLine("ScreenShotReceiver.RethreadedUpload not monitoring " + upload.UserID); } } catch (Exception e) { Debug.WriteLine(e); } finally { Debug.WriteLine("ScreenShotReceiver.RethreadedUpload exit " + DateTime.Now); } }