C# ProgressBar赢得';t过一段时间后从另一个线程更新
我正在尝试从另一个线程更新ProgressBar和TextBlock。我正在使用以下代码:C# ProgressBar赢得';t过一段时间后从另一个线程更新,c#,multithreading,user-interface,C#,Multithreading,User Interface,我正在尝试从另一个线程更新ProgressBar和TextBlock。我正在使用以下代码: this.Dispatcher.Invoke((Action)(() => { myProgressBar.SetValue(ProgressBar.ValueProperty, Convert.ToDouble(70)); myPopupText.Text = "BinaryFile s
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是正确的。尝试使用
myProgressBar.ReportProgress(int)
method。或者每次调用此方法时设置不同的值=我没有使用BackgroundWorker。我确实设置了不同的值lol XD您能提供足够的代码来复制问题吗,尽可能短的代码段?