public void StartAndStopAreNotReentrant()
        {
            using var gpw = new GameProcessWatcher(_gif, new NativeMethodsMock());

            bool IsRunning() => gpw.GetPrivateField <bool>("_running");

            Assert.False(IsRunning());

            gpw.Start();
            Assert.True(IsRunning());

            gpw.Start();
            Assert.True(IsRunning());

            gpw.Stop();
            Assert.False(IsRunning());

            gpw.Stop();
            Assert.False(IsRunning());
        }
        public void Stop()
        {
            if (!_running)
            {
                return;
            }

            _running = false;

            _modifierKeysWatcher.Stop();
            _journalWatcher.Stop();
            _statusWatcher.Stop();
            _bindingsWatcher.Stop();
            _graphicsConfig.Stop();
            _gameProcessWatcher.Stop();
        }