я использую wpf, на моем интерфейсе есть кнопка.
когда пользователь щелкает по нему, у меня есть цикл for, который запускает новый метод в новом потоке с использованием autoresetevent.
в этом методе в этом новом потоке я использую метку, назовем ее lblStatus. Я хочу обновить этот ярлык в этой теме, которого нет в пользовательском интерфейсе. используя 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();
}
программа просто останавливается здесь. он не меняет содержимое ярлыка, он возвращается к моему пользовательскому интерфейсу, но блокирует его.
я пробовал
lblStatus.Dispatcher.Invoke(DispatcherPriority.Normal, new LblStatusThreadCheck(lblStatusThreadCheck), "Scanning...");
тоже, но это тоже не работает. Любые идеи?