OStateUserIdオブジェクトに結果を取得した後、このステートメントを実行したいと思います。
_details.Text = OStateUserID.name + "\n" + OStateUserID.population);
_
_bStateuserID.Click += async delegate
{
details.Text=" ";
Guid x = new Guid("33F8A8D5-0DF2-47A0-9C79-002351A95F88");
state OStateUserID =(state) await obj.GetStateByUserId(x.ToString());
details.Text = OStateUserID.name + "\n" + OStateUserID.population);
};
_
GetStateByUserId()
メソッドは_class State
_のオブジェクトを返します。
非同期で実行されます。操作が完了したら、nameとpopulationをTextViewの詳細に割り当てたいと思います。
この場合、どうすればRunOnUIThread()
を使用できますか?
あなたはする必要はありません。
あなたが投稿したこのコードでは:
bStateuserID.Click += async delegate
{
details.Text=" ";
Guid x = new Guid("33F8A8D5-0DF2-47A0-9C79-002351A95F88");
state OStateUserID =(state) await obj.GetStateByUserId(x.ToString());
details.Text = OStateUserID.name + "\n" + OStateUserID.population);
};
この線
details.Text = OStateUserID.name + "\n" + OStateUserID.population);
はすでにUIスレッドで実行されています。
この動作を説明する async
intro がブログにあります。
あなたは適切な関数名を持っているので、どうしてそれを見逃したのかわかりません。とにかく、ラムダ式でそれを行うことができます:
Activity.RunOnUiThread(() => {
details.Text = OStateUserID.name + "\n" + OStateUserID.population;
});
または、そのためのメソッドを作成することもできます
Activity.RunOnUiThread(Action);
private void Action()
{
details.Text = OStateUserID.name + "\n" + OStateUserID.population;
}
後者の場合、まだそうでない場合は、変数をプライベートフィールドに格納する必要があります。最初のケースでは、変数がRunOnUiThread呼び出しと同じスコープ内にある場合に機能します。