Example #1
0
        public void Disconnect()
        {
            ServerState = false;
            newConnection.Set();

            while (DataRecievedThread.ThreadState != System.Threading.ThreadState.Stopped)
            {
                System.Threading.Thread.Sleep(50);
            }

            while (connectionThread.ThreadState != System.Threading.ThreadState.Stopped)
            {
                System.Threading.Thread.Sleep(50);
            }

            mutexServerArray.WaitOne();
            mutexClientArray.WaitOne();

            serverArray.CloseAllSockets();
            clientArray.CloseAllSockets();

            mutexClientArray.ReleaseMutex();
            mutexServerArray.ReleaseMutex();

            //serverSock.Shutdown(System.Net.Sockets.SocketShutdown.Both);
            serverSock.Close();
            GHub.client.Client.ClearInfoList();
            GHub.Settings.ACCOUNTS.profiles.SaveToFile(1);
            GHub.Settings.ACCOUNTS.usersAccounts.SaveToFile(1);

            serverArray        = null;
            clientArray        = null;
            serverSock         = null;
            connectionThread   = null;
            DataRecievedThread = null;

            System.GC.Collect();
        }