示例#1
0
        /// <summary>
        /// This thread-safe object goes through all the servers, pulling in values
        /// </summary>
        /// <param name="state"></param>
        private void ServerInformationUpdater(object state)
        {
            while (true)
            {
                foreach (Uri ServerURI in MMServerConnections.Keys.ToArray())
                {
                    MM_Administrator_Types   Client    = MMServerConnections[ServerURI];
                    ServerLinkedColumnHeader TargetCol = MMServers[ServerURI];

                    if (Client.State == CommunicationState.Opening)
                    {
                        SetColor(TargetCol, Color.Yellow);
                    }
                    else if (Client.State == CommunicationState.Faulted || Client.State == CommunicationState.Closed || Client.State == CommunicationState.Closing)
                    {
                        SetColor(TargetCol, Color.Red);
                    }
                    else
                    {
                        try
                        {
                            TargetCol.SysInfo = Client.GetSystemInformation();
                            TargetCol.Users   = Client.GetUserInformation();
                        }
                        catch (Exception ex)
                        {
                            SetColor(TargetCol, Color.Red);
                        }
                    }
                }
                Thread.Sleep(1000);
            }
        }