public void StartCapture() { if (_captureWorker != null) { return; } if (_version == -1) { _version = _mainWindow.VersioningProvider.Api.Tags.Length; } _commitSha = null; //_db = _mainWindow.VersioningProvider.GetDatabaseForVersion(_version); _db = _mainWindow.VersioningProvider.GetDatabaseFromLocalFiles(); try { ClearCapture(true); _captureWorker = new MachinaCaptureWorker(this, _mainWindow.CaptureMode, _mainWindow.CaptureFlags); _captureThread = new Thread(_captureWorker.Run); _captureThread.Start(); UpdateInfoLabel(); ChangeTitle(_currentXmlFile); _wasCapturedMs = _mainWindow.DontUsePacketTimestamp.IsChecked; } catch (Exception e) { new ExtendedErrorView("Failed to initialize MachinaCaptureWorker. Try switching your capture mode.", e.ToString(), "Error").ShowDialog(); _captureWorker = null; _captureThread = null; } }
public void StopCapture() { if (_captureWorker == null) { return; } try { _captureWorker.Stop(); _captureThread.Join(); _captureWorker = null; UpdateInfoLabel(); ChangeTitle(_currentXmlFile); } catch (Exception e) { new ExtendedErrorView("Failed to shut down MachinaCaptureWorker. Try switching your capture mode.", e.ToString(), "Error").ShowDialog(); _captureWorker = null; _captureThread = null; } }