private void InvokeCaptured(Byte[] data) { CaptureEventHandler capturedHandler = CapturedEvent; if (capturedHandler != null) { capturedHandler(data); } else { Trace.TraceInformation("capturedHandler is null"); } }
public override async Task StreamingServer(StreamRequest request, IServerStreamWriter <StreamImages> responseStream, ServerCallContext context) { var capture = new Capture(new CaptureSetting(request.X, request.Y, request.W, request.H) { ID = request.Index }); CaptureEventHandler CaptureEvent = new CaptureEventHandler(new EventDrivenCapture.Capture[1] { capture }); capture.CapturedEventHandler += (sender, args) => { var images = new StreamImages(); var streamReader = new MemoryStream(); capture.CapturedImage.Save(streamReader, ImageFormat.Bmp); images.Image = ByteString.CopyFrom(streamReader.ToArray()); responseStream.WriteAsync(images).Wait(); // use await here will make event handler async void which actually will not wait for response write to be done, that may cause write to a uncomplete response stream }; CaptureEvent.Start(); resetEvent.WaitOne(); }
public void AddCaptureEventHandler(CaptureEventHandler handler) { m_d3d9Capturer.CapturedEvent += handler; }
public void AddCaptureEventHandler(CaptureEventHandler handler) { m_d3d9Capturer.CapturedEvent += handler; }