private void DoLogin(string username, string password)
        {
            var workMessage = "Logging in...";

            SetWork(workMessage, Brushes.Black, false);

            passwordBoxPassword.Clear();

            DateTime timeout = DateTime.Now + App.Settings.LogInTimeout;

            bool isSuccess = false;
            SocketSession.BeginAndCallback(delegate
            {
                isSuccess = SocketSession.Login(username, password, timeout);
            }, delegate
            {
                if (isSuccess)
                {
                    IsLoggedIn = true;

                    App.LoggedIn(username);

                    var userData = new UserDataManager(SocketSession);
                    var homeWindow = new HomeWindow();
                    homeWindow.Init();
                    Hide();
                    homeWindow.Show();

                    App.Settings.Username = username;
                    if (checkBoxRememberPassword.IsChecked == true)
                        App.Settings.Password = password.Encrypt();
                    else
                        App.Settings.Password = "";
                    App.Settings.Save();

                    Close();

                    foreach (var action in _loginSuccessActions)
                    {
                        try
                        {
                            action();
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine("Login success action threw Exception: " + e.Message);
                            Console.WriteLine(e.StackTrace);
                        }
                    }
                }
                else
                {
                    var message = "Invalid username or password";
                    if (DateTime.Now >= timeout)
                        message = "Try again later.  No response within timeout period.";

                    SetWork(message, Brushes.Red, true);
                    passwordBoxPassword.Focus();
                }
                _loginSuccessActions.Clear();
            });
        }
 public HomeWindow()
 {
     InitializeComponent();
     Home = this;
     WindowTreeManager = new WindowTreeManager(this, null, false);
 }