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; } } }
public void OnScreenshotReceived(byte[] imageData) { var args = new ScreenshotReceivedEventArgs() { Screenshot = new MemoryStream(imageData) }; ScreenshotReceived?.Invoke(null, args); }
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; } }