Ejemplo n.º 1
0
        public void Stop()
        {
            foreach (ulong videoID in _ctrlEndTimes.Keys)
            {
                EndCtrl(videoID);
            }

            cancelLoginChecker();
            _connection.Stop();
        }
Ejemplo n.º 2
0
        private void videoRun()
        {
            _videoEvent.Reset();
            _connection = new CCTVConnection(Info.ServerHost, _port);

            _connection.ConnectEvent    += _connection_ConnectEvent;
            _connection.DisconnectEvent += _connection_DisconnectEvent;
            _connection.MessageEvent    += _connection_MessageEvent;
            _connection.Start();

            WaitHandle[] handles = new WaitHandle[] { _event, _videoEvent };
            _lastRecvTime = DateTime.Now;
            while (true)
            {
                int wait = WaitHandle.WaitAny(handles, 1000);
                if (wait == WaitHandle.WaitTimeout)
                {
                    if (DateTime.Now - _lastRecvTime > TimeSpan.FromSeconds(30))
                    {
                        break;
                    }
                }
                else
                {
                    break;
                }
            }

            _connection.ConnectEvent    -= _connection_ConnectEvent;
            _connection.DisconnectEvent -= _connection_DisconnectEvent;
            _connection.MessageEvent    -= _connection_MessageEvent;
            _connection.Stop();

            _hikm4Decoder.Dispose();
            _ffmpegDecoder.Release();
            _univiewDecoder.Dispose();
        }