首页 新闻 赞助 找找看

WPF的UI线程和呈现线程问题.

0
[已解决问题] 解决于 2014-01-22 10:11

 现:窗体上一个grid里的WInformHost里的PictrueBox,一个按钮,点击按钮改变grid大小来改变PictrueBox的大小,然后弹出改变后的PB的Width和H,但是结果是后台的代码运行完了,前台的UI才改变过来,所以我在Button的点击事件里得不到改变后的PictrueBox的Width和Height。 求解决办法!!

问题补充:

为什么UI线程会慢一拍,有没有方法等待UI走完在处理后台代码

溪山行旅丶的主页 溪山行旅丶 | 初学一级 | 园豆:6
提问于:2013-11-05 13:45
< >
分享
最佳答案
1

用BackGroundWork吧

BackgroundWorker _backTask = new BackgroundWorker();
            _backTask.DoWork += _backTask_DoWork;
            _backTask.RunWorkerCompleted += _backTask_RunWorkerCompleted;
            _backTask.RunWorkerAsync();



------------------------------

 void _backTask_DoWork(object sender, DoWorkEventArgs e)
        {
            Thread.Sleep(5000);
        }
        void _backTask_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            MessageBox.Show(LayoutRoot.ActualWidth.ToString() + "  " + LayoutRoot.ActualHeight.ToString());
        }
奖励园豆:5
li-peng | 小虾三级 |园豆:954 | 2013-11-05 17:18
其他回答(3)
0

多线程,用计时器或者等待一直到结束模式

iEvent | 园豆:529 (小虾三级) | 2013-11-05 16:42

敢问大侠如何等待一直到结束

支持(0) 反对(0) 溪山行旅丶 | 园豆:6 (初学一级) | 2013-11-05 16:44

@溪山行旅丶:百度之~~ 

支持(0) 反对(0) iEvent | 园豆:529 (小虾三级) | 2013-11-06 08:00
0

AutoResetEvent to sync the thread

程序诗人 | 园豆:313 (菜鸟二级) | 2013-11-05 18:07
0

楼上用异步正解,因为UI线程和你后台执行程序是一个线程,所以他会等后台执行完UI才会更新

幕三少 | 园豆:1384 (小虾三级) | 2013-11-15 10:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册