5

私のアプリケーションはICommands を使用してメソッドをボタンにバインドします。

これらのコマンドを次のように初期化しました。

AnswerCommand = new DelegateCommand(AnsCommandExecute, AnsCommandCanExecute);

AnsCommandExecute()メソッドが UI スレッドまたはバックグラウンド スレッドで機能するかどうかを知りたいですか?

UI スレッドで動作する場合、アプリケーションがバックグラウンドで多くの処理を実行するため、この execute() メソッド用に別のスレッドを作成する必要がありますか。

また、私のアプリケーションは TCP を使用して、別のアプリケーションと通信します。したがって、パフォーマンスを向上させるには、データの受信、処理、およびデータの送信に異なるスレッドを使用する必要がありますか? そのようなアプリケーションに最適なスレッディング アプローチは何でしょうか?

4

1 に答える 1

4

メソッドがメインスレッドで機能するかどうかを確認する最も簡単AnsCommandExecute()な方法は、メソッドにブレークポイントを設定し、呼び出しスタックを確認することです。

クイックアンサーはyesです-AnsCommandExecute()メインスレッドで実行されます。

スレッド要件に答えるために、別のスレッドでコンテンツを呼び出すことができAnsCommandExecute()ます。これにより、UIがレスポンシブになります。

非同期で応答を受信する場合は、「ディスパッチャー」を使用して操作をメインスレッドに戻す必要があります。詳細については、ディスパッチャのドキュメントを参照してください。

于 2012-10-06T14:46:44.920 に答える