クライアントアプリケーションがほぼリアルタイムでサーバーからデータを取得すると仮定します。取得したデータに基づいてUIを継続的に更新する効率的な方法は何ですか?数値を示すテキストのような複数のxamlコントロールを考えてみましょう。アプリケーションが実行されている間は更新されます。ユーザーがそれを決定しない限り、決して停止しません。 (停止ボタンを押すかアプリを終了させる) 以下に、asyncとawaitキーワードを使用した簡単な例を示します。それは私のシナリオのための良い方法ですか?例えば、BackgroundWorkerはもっと良い方法でしょうか?UIを継続的に更新する正しい方法
private async void Button_Click_Begin_RT_Update(object sender, RoutedEventArgs e)
{
while(true)
textField1.Text = await DoWork();
}
Task<string> DoWork()
{
return Task.Run(() =>
{
return GetRandomNumberAsString();
});
}
*私はコードビハインドではなく使用簡略化のために私の例では
私はWPFを使用しますが、私はしたDependencyPropertyへの結合が行く方法だと思っているだろうので、それはしばらくしています。これらの2つの投稿は正しい方向にあなたをシャントする必要があります:https://stackoverflow.com/questions/19981966/wpf-xaml-binding-to-object-created-in-code-behind、https://stackoverflow.com/questions/5824600/databind-xamlからコードビハインドへ –
WPFの背後にあるコアアイデアは、データバインディングとビューモデルクラスを使用しているため、コードの背後で直接コントロールを呼び出すことはありません。したがって、私があなたの場合は、ビューモデルクラスを作成し、 'INotifyPropertyChanged'インターフェースを実装し、プロパティを関連するコントロールにバインドし、async' Task'sを使用してviewmodelクラスインスタンスを更新します。 – mcy
簡潔にするために@mcy私はMVVMに基づいて自分のコードを書いていませんでした。しかし、私は自分のプロジェクトでmvvmを使用します。 – gts13