示例#1
0
        /// <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));
            }
        }
示例#2
0
        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);
            }
        }