У меня есть приложение WPF, которое проверяет пользователя. Когда этот пользователь успешно аутентифицирован, интерфейс изменяется и приветствует пользователя. Я хочу, чтобы это приветственное сообщение появилось в течение 5 секунд, а затем изменило его другим контентом. Это мое приветствие, которая запускает BackgroundWorker
:Фоновертор замораживает мой графический интерфейс
LabelInsertCard.Content = Cultures.Resources.ATMRegisterOK + " " + user.Name;
ImageResult.Visibility = Visibility.Visible;
ImageResult.SetResourceReference(Image.SourceProperty, "Ok");
BackgroundWorker userRegisterOk = new BackgroundWorker
{
WorkerSupportsCancellation = true,
WorkerReportsProgress = true
};
userRegisterOk.DoWork += userRegisterOk_DoWork;
userRegisterOk.RunWorkerAsync();
И это мой BackgroundWorker
с задержкой в пять секунд:
void userRegisterOk_DoWork(object sender, DoWorkEventArgs e)
{
if (SynchronizationContext.Current != uiCurrent)
{
uiCurrent.Post(delegate { userRegisterOk_DoWork(sender, e); }, null);
}
else
{
Thread.Sleep(5000);
ImageResult.Visibility = Visibility.Hidden;
RotatoryCube.Visibility = Visibility.Visible;
LabelInsertCard.Content = Cultures.Resources.InsertCard;
}
}
Но BackgroundWorker замораживает мой GUI за пять секунд. Очевидно, что я хочу сделать код внутри рабочего через 5 секунд после сообщения приветствия.
Почему это замораживает графический интерфейс?
Что вы думаете 'uiCurrent.Post' делает? – SLaks