Я использую wpf, есть кнопка на моем ui.Dispatcher.Invoke из новой темы блокирует мой UI
Когда пользователь нажимает на него, у меня есть цикл for, который запускает новый метод, в новом потоке, используя autoresetevent.
В этом методе в этом новом потоке я использую метку, назовем ее lblStatus. Я хочу обновить этот ярлык в этом потоке, который не находится на ui. используя wpf, я должен использовать Dispatcher.Invoke.
вот пример моего кода:
Thread thread= new Thread(StartLooking);
thread.Start();
_waitHandle.WaitOne();
private void StartLooking(object value)
{
if (lblStatus.Dispatcher.Thread == Thread.CurrentThread)
{
lblStatus.Content = "Scanning>...";
}
else
{
lblStatus.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => lblStatus.Content = "Scanning>>>>>"));
}
_waitHandle.Set();
}
программа просто останавливается здесь. он не изменяет содержимое метки, он возвращается к моему ui, но блокирует его.
я пытался
lblStatus.Dispatcher.Invoke(DispatcherPriority.Normal, new LblStatusThreadCheck(lblStatusThreadCheck), "Scanning...");
, а также, но это не работает также. есть идеи?
Вы думаете об использовании привязки данных? – GETah
Почему вы начинаете новый поток, если хотите дождаться завершения этой операции, прежде чем что-либо можно будет сделать? – whoisthis