我正在使用Xamarin开发Android应用程序。我有一个静态类NetworkServices,它公开了一些调用webservices的方法。 其中之一,查询服务器状态:
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());
}
从OnCreate调用此方法:
// Query server status
Task<SystemInfo> si = NetworkServices.TestConnection(hsi);
serverStatus.SetText(si.Result.CurrentDateTime, TextView.BufferType.Normal);
但这冻结了应用程序。 为什么错了?查询Result属性不正确? 谢谢
答案 0 :(得分:0)
您应该在后台运行您的任务,并在UI线程上使用UI更新继续它。
// Query server status
Task<SystemInfo> si = NetworkServices.TestConnection(hsi);
si.ContinueWith((result) =>
{
using(var h = new Handler(Looper.MainLooper))
{
h.Post(()=>serverStatus.SetText(result.CurrentDateTime, TextView.BufferType.Normal));
}
}
si.Start();