private bool DownloadEvf() { // Do not download if pauseUpdate requested if (_pauseLiveViewRequested) { return(true); } if ((this.LiveViewDevice & EosLiveViewDevice.Host) == EosLiveViewDevice.None || _cancelLiveViewRequested) { return(false); } var memoryStream = IntPtr.Zero; try { Util.Assert(Edsdk.EdsCreateMemoryStream(0, out memoryStream), "Failed to create memory stream."); using (var image = EosLiveImage.CreateFromStream(memoryStream)) { Util.Assert(Edsdk.EdsDownloadEvfImageCdecl(this.Handle, image.Handle), "Failed to download evf image."); var converter = new EosConverter(); this.OnLiveViewUpdate(new EosLiveImageEventArgs(converter.ConvertImageStreamToBytes(memoryStream)) { Zoom = image.Zoom, ZommBounds = image.ZoomBounds, ImagePosition = image.ImagePosition, Histogram = image.Histogram, }); } } catch (EosException eosEx) { if (eosEx.EosErrorCode != EosErrorCode.DeviceBusy && eosEx.EosErrorCode != EosErrorCode.ObjectNotReady) { throw; } } finally { if (memoryStream != IntPtr.Zero) { Edsdk.EdsRelease(memoryStream); } } return(true); }