// 线程进入点 private void WorkerThread() { while (!stopEvent.WaitOne(0, true)) { Monitor.Enter(this); int n = InnerList.Count; // 查询每一个摄像头 for (int i = 0; i < n; i++) { Camera camera = (Camera)InnerList[i]; if (!camera.Running) { camera.CloseVideoSource(); InnerList.RemoveAt(i); i--; n--; } } Monitor.Exit(this); //等待 Thread.Sleep(300); } //关闭摄像头 foreach (Camera camera in InnerList) { camera.Stop(); } }
// 移除摄像头 public void Remove(Camera camera) { Monitor.Enter(this); int n = InnerList.Count; for (int i = 0; i < n; i++) { if (InnerList[i] == camera) { if (camera.Running) { camera.Stop(); } camera.CloseVideoSource(); InnerList.RemoveAt(i); break; } } Monitor.Exit(this); }
// 移除摄像头 public void Remove(Camera camera) { Monitor.Enter(this); int n = InnerList.Count; for (int i = 0; i < n; i++) { if (InnerList[i] == camera) { if (camera.Running) camera.Stop(); camera.CloseVideoSource(); InnerList.RemoveAt(i); break; } } Monitor.Exit(this); }