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

时间:2013-03-06 12:12:28

标签: c# wpf multithreading mvvm

我有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 :(得分:0)

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