private void SafeInvokeScreenshotReceived(ScreenshotReceivedEventArgs eventArgs)
        {
            if (ScreenshotReceived == null)
            {
                return;         //No Listeners
            }
            ScreenshotReceivedEvent listener = null;

            Delegate[] dels = ScreenshotReceived.GetInvocationList();

            foreach (Delegate del in dels)
            {
                try
                {
                    listener = (ScreenshotReceivedEvent)del;
                    listener.Invoke(eventArgs);
                }
                catch (Exception)
                {
                    //Could not reach the destination, so remove it
                    //from the list
                    ScreenshotReceived -= listener;
                }
            }
        }
Example #2
0
        public void OnScreenshotReceived(byte[] imageData)
        {
            var args = new ScreenshotReceivedEventArgs()
            {
                Screenshot = new MemoryStream(imageData)
            };

            ScreenshotReceived?.Invoke(null, args);
        }
Example #3
0
 public override void ResponseReceived(byte[] parameter)
 {
     switch ((RemoteDesktopCommunication)parameter [0])
     {
     case RemoteDesktopCommunication.ResponseScreenshot:
         try {
             var oldImage = CurrentImage;
             ScreenshotReceived?.Invoke(this, CurrentImage = BitmapFactory.DecodeByteArray(parameter, 1, parameter.Length - 1));
             oldImage?.Dispose();
         } catch (ArgumentException) {
             ErrorDecodingImage?.Invoke(this, EventArgs.Empty);
         }
         break;
     }
 }