/// <summary> /// Start the device for a frame grab, wait a bit and then return the result. /// This method MUST raise a CameraThumbnailProduced event, even in case of error. /// </summary> public void Run(object data) { log.DebugFormat("Starting {0} for thumbnail.", summary.Alias); device.FrameProduced += device_FrameProduced; device.FrameError += device_FrameError; device.Start(); waitHandle.WaitOne(timeout, false); lock (locker) { if (!cancelled) { device.FrameProduced -= device_FrameProduced; device.FrameError -= device_FrameError; device.Stop(); } } if (CameraThumbnailProduced != null) { CameraThumbnailProduced(this, new CameraThumbnailProducedEventArgs(summary, image, imageDescriptor, hadError, cancelled)); } }
public void Stop() { log.DebugFormat("Stopping device {0}", summary.Alias); device.FrameProduced -= device_FrameProduced; device.FrameError -= device_FrameError; device.GrabbingStarted -= device_GrabbingStarted; device.Stop(); grabbing = false; if (GrabbingStatusChanged != null) { GrabbingStatusChanged(this, EventArgs.Empty); } }