WindowsPhoneアプリのUIスレッドからできるだけ多くの処理を移動しようとしています。ボタンをクリックすると実行されるコードがあります。このコードは、概念的には以下のコードに似ています。
private int Processing(int a, int b, int c) {
this.A = this.moreProcessing(a);
this.B = this.moreProcessing(b);
this.C = this.moreProcessing(c);
int newInt = /* ... */
return newInt;
}
public void Button_Click(object sender, EventArgs args) {
var result = Processing(1, 2, 3);
this.MyTextBox.Content = result;
}
Processingメソッドがグローバル状態変数を設定/取得していない場合、スレッド上のそのコードの実行を移動するのは非常に簡単です。
一度に1つのスレッドだけが正しい順序で実行されていることを確認するにはどうすればよいですか?現在、処理コードはUIスレッドで実行されるため、簡単です。UIスレッドの良いところは、すべてが正しい順序で一度に1つずつ実行されることを保証することです。スレッドでそれを複製するにはどうすればよいですか?
コード全体をリファクタリングしてグローバル状態をほとんど持たないようにすることはできますが、現時点で必ずしもそうできるとは限りません。ロックを使用することもできますが、もっと良い方法があるかどうか疑問に思っています。私が行っている処理はそれほど重くはありません。ただし、UIに多少の遅れが見られることがあるので、UIスレッドをできるだけ自由に保ちたいと思います。
ありがとう!