一段时间后,ProgressBar不会从另一个线程更新

时间:2013-08-27 13:57:32

标签: c# multithreading user-interface

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

0 个答案:

没有答案