我有WPF与MVVM应用程序 . ViewModel和View已连接 . View中的控件绑定到ViewModel,ViewModel继承INotifyChanged . ViewModel中的简单控件更新工作正常 .
我想创建一些包含一些信息字段的信息类 . 接下来,我想创建自己的线程,将Info类中的字段映射到更新View的ViewModel中的字段 . Info类的Object将用作ViewModel中调用的函数arg .
private int someControl;
public SomeControl {
get{return someControl;}
set
{
someControl = value;
OnPropChanged("SomeControl");
}
private InfoClass info = new InfoClass();
Thread thread = null;
public ViewModel()
{
Thread thread = new Thread(new ThreadStart(update));
thread.IsBackground = true;
thread.start();
someLongFunction(info);
}
private void update()
{
SomeControl = info.someField;
thread.sleep(1000);
update();
}
我应该添加或更改什么才能定期更新?现在,只有someLongFunction结束其工作时才更新 .
1 回答
如果你真正想要的是连续视图更新,那么你不必为此创建一个线程,因为那时你必须在Dispatcher线程(UI线程)上进行这些更新 . 相反,您可以使用DispatcherTimer class,它是为这种情况构建的,您可以提供间隔,DispatcherTimer将在该时间间隔内定期调用您的方法,并将在Dispatcher Thread上自动执行 .