Exemplo n.º 1
0
        public static async Task Disconnect(bool byMission = false)
        {
            if (bw.WorkerSupportsCancellation)
            {
                bw.CancelAsync();
            }

            bw.Dispose();
            //if (bw.WorkerSupportsCancellation)
            //{
            //}

            //isSelfServer = false;
            if (isConnected)
            {
                if (client.State != CommunicationState.Faulted)
                {
                    try
                    {
                        await client.DisconnectAsync(ID);
                    }
                    catch (Exception e)
                    {
                        Log.Instance.W(client, "Error appeared when you've tried to send message. Try again. " + e.Message);
                    }
                }
            }

            //bw = new BackgroundWorker();
            isConnected = false;
            //isSelfServer = false;
            client = null;
            ID     = 0;

            currentlyUpdating = false;
            currentOrder      = null;
            scan = new NetworkComputers();

            ClientReadiness            = false;
            LeaderServer.CurrentServer = null;

            ServerUser.Current.ID               = 0;
            ServerUser.Current.LastSeen         = DateTime.MinValue;
            ServerUser.Current.isLeader         = false;
            ServerUser.Current.operationContext = null;
            ServerUser.Current.MissionForClient = 0;
            ServerUser.Current.Name             = string.Empty;
            ServerUser.Current.Order            = null;
            ServerUser.Current.Ready            = false;
            CurrentDeliverer = null;

            if (!byMission)
            {
                ClientStateChanged?.Invoke(ClientState.Offline);
            }
        }