1

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

4

0 回答 0