にメソッドの結果を呼び出す:は、私は、次について疑問に思ってメインスレッド
私はContainer
とMethod
という名前のメソッドという名前の監視可能なコレクションを持っています。
メインスレッドでは、Method
の戻り値をContainer
に追加します。
次のコードは、別のスレッドで実行されますので、私はエラーを持っていないようにアプリ現在のスレッドにContainer.Add
を起動している:私は、次の
App.Current.Dispatcher.Invoke(() => {
Container.Add((MyObject)Method())
});
を行うかどう
object obj = Method()
App.Current.Dispatcher.Invoke(() => {
Container.Add((MyObject)obj)
});
私の質問は
メソッド(長時間実行中のメソッド)は、現在のアプリケーションのスレッドで実行されますが、これはUIを渡すため正しくないため、定義しないでContainer
に追加するメソッドの戻り値のみを呼び出すことができますオブ最初の例のようにject?あなたはしかし、バックグラウンドスレッドを取り除くこと
Dispatcher.Invoke(new Action<MyObject>(o => Container.Add(o)), (MyObject)Method());
とTask
のメソッドを呼び出します。
2番目のオプションでは、呼び出しメソッドを 'async'とマークする必要はありませんか? – Grx70
@ Grx70もちろん、いつものように。 – Clemens
最初の例を使用すると、Methodは同じスレッドで実行されますが、結果はUIスレッドにのみ呼び出されますか? – berthos