我正在尝试从另一个线程更新 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 是真的。