public void DecodeStop() { lock (_decodeStateLock) { lock (_thisLock) { if (this.DecodeState == ManagerState.Stop) return; _decodeState = ManagerState.Stop; } { foreach (var thread in _decodeThreads) { thread.Join(); } _decodeThreads.Clear(); } } }