コード例 #1
0
        private void disconnect()
        {
            // leave group
            if (group != null)
            {
                group.Leave();
                T.LogDebug("Left " + group + ".");
            }
            else
            {
                T.LogDebug("No group to leave.");
            }

            // stop listener
            if (listening)
            {
                if (regularMessageHandler != null)
                {
                    connection.OnRegularMessage -= regularMessageHandler;
                }
                if (membershipMessageHandler != null)
                {
                    connection.OnMembershipMessage -= membershipMessageHandler;
                }
                if (rt.threadSuspended)
                {
                    lock (rt) {
                        Monitor.Pulse(rt);
                        rt.threadSuspended = false;
                    }
                }
            }

            // Disconnect.
            connection.Disconnect();
        }