private void Stop() { // set busy cursor Cursor = Cursors.WaitCursor; // stop current video source videoSourcePlayer.SignalToStop(); // wait 2 seconds until camera stops for (int i = 0; i < 50 && videoSourcePlayer.IsRunning; i++) { Thread.Sleep(100); } if (videoSourcePlayer.IsRunning) { videoSourcePlayer.Stop(); } if (videoSource != null) { videoSource.Dispose(); } Cursor = Cursors.Default; videoSourcePlayer.BorderColor = Color.Black; viewModel.IsWebcamEnabled = false; }
// Protected implementation of Dispose pattern. protected virtual void Dispose(bool disposing) { if (_disposed) { return; } if (disposing) { _videoCaptureDevice?.Dispose(); } // Free any unmanaged objects here. // _disposed = true; }
public void dispose_test() { var videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); var videoSource = new VideoCaptureDevice(videoDevices[0].MonikerString); videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame); videoSource.Start(); Assert.IsFalse(videoSource.IsDisposed); Assert.IsTrue(videoSource.IsRunning); videoSource.Dispose(); Assert.IsTrue(videoSource.IsDisposed); Assert.IsFalse(videoSource.IsRunning); Assert.Throws <ObjectDisposedException>(() => videoSource.Start()); }