Example #1
0
        // 线程进入点
        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();
            }
        }
Example #2
0
        // 移除摄像头
        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);
        }
Example #3
0
		// 移除摄像头
		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);
		}