2
私はXamarinでAndroid Appを開発しています。私はいくつかのメソッドを公開してwebservicesを呼び出す静的クラスのNetworkServicesを持っています。 そのうちの一つ、クエリサーバーのステータス:このメソッドは、OnCreate関数から呼び出されXamarin Androidの開発:タスクの結果を取得
public static async Task<SystemInfo> TestConnection(HomeServerInfo hsi)
{
HttpClient openRequest = new HttpClient();
HttpResponseMessage hrm = await openRequest.GetAsync(new System.Uri(hsi.ToString() + "/HomeServices/ServerController"));
return new SystemInfo(hrm.ToString());
}
:
// Query server status
Task<SystemInfo> si = NetworkServices.TestConnection(hsi);
serverStatus.SetText(si.Result.CurrentDateTime, TextView.BufferType.Normal);
が、これはアプリを凍結します。 なぜ間違っていますか?クエリの結果プロパティが正しくありませんか? ありがとうございます
ありがとうございます!私はちょっと混乱しています... TestConnectionはTaskオブジェクトを返します。私がResultプロパティを呼び出すと、タスクは実行されましたか?または、UIスレッドが完了するまで待ちますか?私に少し説明できますか? – robyg72
正確に! TaskのResultプロパティのgetterは、タスクが終了するまでWaitと同等です。メインスレッド(onCreate()内)で実行するので、Resultが計算されるまでアプリをブロックします。 Resultプロパティに右クリックすると、現在のコンテキストでタスクが実行されます。 http://stackoverflow.com/questions/12484112/what-happens-while-waiting-on-a-tasks-result – nevalenny
私は説明に非常に感謝しています!さようなら – robyg72