3

私はMVVMアプリでWPFを持っています。ViewModel と View が接続されています。View からのコントロールは ViewModel にバインドされ、ViewModel は INotifyChanged を継承します。ViewModel での単純なコントロールの更新は正常に機能します。

いくつかの情報フィールドを含む情報クラスを作成したいと思います。次に、Info クラスのフィールドを、View を更新する ViewModel のフィールドにマップする独自のスレッドを作成したいと考えています。Info クラスのオブジェクトは、ViewModel で呼び出される関数の引数として使用されます。

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 がジョブを終了したときのみです。

4

1 に答える 1

0

実際に必要なのが継続的なビューの更新である場合は、そのためのスレッドを作成する必要はありません。これは、ディスパッチャースレッド(UIスレッド)でこれらの更新を行う必要があるためです。代わりに、間隔を指定できるこの種の状況のた​​めに正確に構築されたDispatcherTimerクラスを使用できます。この場合、DispatcherTimerはその間隔で定期的にメソッドを呼び出し、Dispatcherスレッドで自動的に呼び出します。

于 2013-03-06T23:03:23.383 に答える