首页 文章

从自己的后台线程更新绑定控件

提问于
浏览
3

我有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 回答

  • 0

    如果你真正想要的是连续视图更新,那么你不必为此创建一个线程,因为那时你必须在Dispatcher线程(UI线程)上进行这些更新 . 相反,您可以使用DispatcherTimer class,它是为这种情况构建的,您可以提供间隔,DispatcherTimer将在该时间间隔内定期调用您的方法,并将在Dispatcher Thread上自动执行 .

相关问题