我正在尝试从另一个线程更新ProgressBar和TextBlock。我正在使用这段代码:
this.Dispatcher.Invoke((Action)(() =>
{
myProgressBar.SetValue(ProgressBar.ValueProperty, Convert.ToDouble(70));
myPopupText.Text = "BinaryFile succesfully created. Sending to deserialize";
}));
这项工作有一段时间了,但是在执行一个需要10秒(大约)的句子后,如果我再次使用该代码(当然使用不同的值),GUI将不会更新,ProgressBar也不会更新的TextBlock。
我提到的句子与GUI无关。我错过了什么吗?
编辑 - 更多代码 这是一些代码:
this.Dispatcher.Invoke((Action)(() =>
{
myProgressBar.SetValue(ProgressBar.ValueProperty, Convert.ToDouble(70));
myPopupText.Text = "BinaryFile succesfully created. Sending to deserialize";
}));
Thread.Sleep(1000);
lock (sLock)
{
lSent = mCampaignDecryptor.SendAlCommandsToPrinter();
}
if (lSent)
{
this.Dispatcher.Invoke((Action)(() =>
{
myProgressBar.SetValue(ProgressBar.ValueProperty, Convert.ToDouble(100));
myPopupText.Text = "The Campaign was succesfully downloaded";
Thread.Sleep(1000);
grdBar.Visibility = System.Windows.Visibility.Hidden;
}));
}
第一个GUI更新(它不是我代码中的第一个)有效。第二个(这将是最后一个)没有。
PS- lSent是真的。