public void StopListening() { try { m_ShuttingDown = true; if (Socket != null) { Log.LogMsg("Shutting down UDP listener Socket. "); StackTrace stackTrace = new StackTrace(); // get call stack StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames) // write call stack method names foreach (StackFrame stackFrame in stackFrames) { Log.LogMsg(stackFrame.GetFileName() + ", " + stackFrame.GetFileLineNumber() + " :" + stackFrame.GetMethod().Name); // write method name } Socket.Shutdown(SocketShutdown.Both); } } catch (Exception e) { } finally { if (Socket != null) { Log.LogMsg("Closing UDP listener Socket."); Socket.Close(); Socket = null; } if (m_ListenArgs != null) { for (int i = 0; i < m_ListenArgs.Count; i++) { SocketAsyncEventArgsCache.PushReadEventArg(m_ListenArgs[i], new EventHandler <SocketAsyncEventArgs>(ReadCompleted)); } } Listening = false; } }
public void AfterShutdown() { if (m_RecArgs != null) { SocketAsyncEventArgsCache.PushReadEventArg(m_RecArgs, new EventHandler <SocketAsyncEventArgs>(IO_Completed)); m_RecArgs = null; } if (m_SendArgs != null) { SocketAsyncEventArgsCache.PushSendEventArg(m_SendArgs, new EventHandler <SocketAsyncEventArgs>(IO_Completed)); m_SendArgs = null; } if (m_SendArgsUDP != null) { SocketAsyncEventArgsCache.PushSendEventArg(m_SendArgsUDP, new EventHandler <SocketAsyncEventArgs>(IO_Completed)); m_SendArgsUDP = null; } }