/// <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; } } }
private void ReleaseResources() { try { _CloseEvent.Close(); } catch { } try { _Event.Close(); } catch { } _CloseEvent = null; _Event = null; _Thread = null; Started = false; }