private void LoginButton_Click(object sender, RoutedEventArgs e) { if (!ValidateFields()) { return; } var username = UsernameEntry.Text; var password = PasswordEntry.Password; if (RememberMeCheckbox.IsChecked != null) { Settings.Default.RememberMe = (bool)RememberMeCheckbox.IsChecked; } // check for remember me if (Settings.Default.RememberMe) { Settings.Default.Username = username; Settings.Default.Password = password; } DisableLoginButtons(); // Call in new thread to liberate UI var thread = new Thread(() => { MainWindow.Instance.PanelLoading = true; MainWindow.Instance.PanelMainMessage = "Identification en cours"; // All entry are valid, we can proceed with login try { var token = _userAccess.Login(username, password); _user.UserToken = token; _user.Name = username; _user.IsConnected = true; var id = JwtHelper.DecodeToken(token).UserId; NativeFunction.connexion(new StringBuilder(token), token.Length, new StringBuilder(id), id.Length); // Todo kf, add userId Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() => { // Go to main menu if login is completed _eventManager.Notice(new ChangeStateEvent() { NextState = Enums.States.MainMenu }); MainWindow.Instance.PanelLoading = false; Load.LoadOnLogin(); })); } catch (Exception exception) { ShowError(exception.Message); } }); thread.Start(); }