/// <summary> /// Safely sends a message and prevents multiple simultaneous /// write operations on the <see cref="_stream"/>. /// </summary> /// <param name="message">The message to send.</param> private void SafeSendMessage(IMessage message) { try { _singleWriteMutex.WaitOne(); using (PayloadWriter pw = new PayloadWriter(_stream, true)) { OnClientWrite(message, pw.WriteMessage(message)); } } catch (Exception) { Disconnect(); SendCleanup(true); } finally { _singleWriteMutex.ReleaseMutex(); } }