MVVM如何实现UI线程的实时刷新
我用了MVVMlight,有个问题,我在model里声明了一个ObservableCollection<string> Logs,在VM里也做了对应的,界面里也用LISTBOX绑定了这个,在界面里有个按钮绑定了一个relaycommand Addlog,这个command直接调用model里的一个方法,会随时间增加而添加字符串到Logs里面去,这个会持续比较长的时间,这时问题来了,每次点击这个按钮后界面都没反应,一直要等到这个方法完成了才会把所有的Logs显示出来,而我是想它实时显示的。
这个应该是处理线程和UI线程的问题,在没使用MVVM的时候可以用界面元素的Dispatcher来处理,而使用MVVM后,VM是不知道界面元素的,应该怎么做呢,特别是在mvvmlight下?
[解决办法]
1.Dispatcher只是入列。最后还是有UI线程调用的,所以如果你操作函数,中涉及到长时间的执行。那么肯定堵塞无法直接更新UI数据显示的
2.如果想调用UI的dispatcher,你可以考虑使用
System.Windows.Threading.Dispatcher.CurrentDispatcher