В C# backgroundworker в WPF многопоточность загрузки ..рисунок в качестве логина
До сих пор мне не везло с загрузкой gif-изображения, когда я загружаю/проверяю подключение к базе данных, я нажимаю кнопку входа в систему и не получаю ошибок в своем логине, я запускаю свой gif, но я также запускаю его в разделе dowork и progress im не уверен, какой раздел на самом деле правильный, я знаю, что не нужно связываться с пользовательским интерфейсом в dowork
Моя программа работает, но мой .gif не запускается, и через некоторое время появляется правильный экран! Так что я знаю, что я очень близок, просто мой gif должен выскочить, и это все.
Мой gif находится в <mediaelement>
private void BtnLoginUser_Click(object sender, RoutedEventArgs e) { // Start loading Gif LoadSpinner.Visibility = Visibility.Visible; // Disable login and make create button a cancel. BtnLoginUser.IsEnabled = false; BtnCreateUser.Content = "Cancel"; // Start the background worker. backgroundWorker.RunWorkerAsync(); } private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e) { // ?? Start the loading ?? //throw new NotImplementedException(); // backgroundWorker.ReportProgress((int)e.Argument); try { loginUser = SQLuserAccess.UserLogin(username, password); if (loginUser != null) { if (username == loginUser.Username && password == loginUser.Password) { } } } catch(Exception ex) { MessageBox.Show(ex.Message.ToString()); } } private void BackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { LblWatch.Content = "Processing " + e.UserState.ToString() + " : " + e.ProgressPercentage; //maybe here is where i run the loading.gif?? ?? free to interact with UI in progressChanged. LoadSpinner.Visibility = Visibility.Visible; } private void BackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { //Stop the loading RUNS when thread is COMPLETED can work on UI //throw new NotImplementedException(); BtnCreateUser.Content = "Register"; LoadSpinner.Visibility = Visibility.Hidden; if (loginUser.IsAdmin) { Window WindowAdminMenu = new AdminWindow(loginUser); WindowAdminMenu.Show(); Close(); } else if (loginUser.IsCustomer) { Window WindowCustomerMenu = new CustomerScreen(loginUser); WindowCustomerMenu.Show(); Close(); } else lblInvalidText.Content = "Invalid Account Information"; } private void LoadSpinner_MediaEnded(object sender, RoutedEventArgs e) { LoadSpinner.Position = new TimeSpan(0, 0, 1); LoadSpinner.Play(); }
Что я уже пробовал:
Я получил это работает без каких-либо ошибок, единственное, что по какой-то причине мой .gif не выскакивает, так что мой загрузочный образ не работает, пока загружается раздел входа в систему