示例#1
0
        /// <summary>
        /// Start to receive message
        /// </summary>
        public void Start()
        {
            lock (_sLockObj)
            {
                Id = _RecvId++;
            }

            lock (_LockObj)
            {
                if (!Started)
                {
                    _CloseEvent          = new System.Threading.ManualResetEvent(false);
                    Closing              = false;
                    _Event               = new System.Threading.AutoResetEvent(false);
                    _Thread              = new System.Threading.ProcessorThread(new System.Threading.ThreadStart(MessageProc));
                    _Thread.IsBackground = true;
                    _Thread.SetProcessorAffinity(Id % Environment.ProcessorCount);
                    _Thread.Start();

                    RestartTimes++;

                    Started = true;
                }
            }
        }
示例#2
0
        private void ReleaseResources()
        {
            try
            {
                _CloseEvent.Close();
            }
            catch
            {
            }

            try
            {
                _Event.Close();
            }
            catch
            {
            }

            _CloseEvent = null;
            _Event      = null;
            _Thread     = null;
            Started     = false;
        }