Xamarin 表单:在 callunt await client.GetAsync 之后留下方法
Xamarin forms: Method is left after callunt await client.GetAsync
我正在通过 Rest API 从服务器获取数据。但是每当我等待客户端响应时,调试器就会留下 Methos,并且程序开始加载 GUI,即使此时没有要显示的数据。我已经坚持了几天。我怎样才能让代码等待响应?我已经在使用 Await
我获取数据的方法:(第 8 行中的客户端调用)
public async Task<ObservableCollection<Datensatz>> getDataFromAzure()
{
string URL = URLForContent;
_client = new HttpClient();
_client.DefaultRequestHeaders.Add("ApiKey", PW);
var result1 = await _client.GetAsync(URL, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false);
if (result1.StatusCode == System.Net.HttpStatusCode.OK)
{
var result = await result1.Content.ReadAsStringAsync();
var ContentFromJson = JsonConvert.DeserializeObject<ObservableCollection<Datensatz>>(result);
string json = JsonConvert.SerializeObject(ContentFromJson, Formatting.Indented);
var filename = @"data.json";
var destinatioPath = Path.Combine(Android.App.Application.Context.GetExternalFilesDir(null).ToString(), filename);
File.WriteAllText(destinatioPath, json);
App.Database_Main.FillMainDBWithJsonEntrys();
return ContentFromJson;
}
return null;
}
您可以使用Task 的Wait 方法。如
Task result = getDataFromAzure()
result.Wait();
你也可以使用Thread.sleep(1000)让主线程休眠一段时间。但这会降低应用程序的功能,因为我们不知道异步方法需要多长时间,如果超过5秒会导致ANR。
我正在通过 Rest API 从服务器获取数据。但是每当我等待客户端响应时,调试器就会留下 Methos,并且程序开始加载 GUI,即使此时没有要显示的数据。我已经坚持了几天。我怎样才能让代码等待响应?我已经在使用 Await
我获取数据的方法:(第 8 行中的客户端调用)
public async Task<ObservableCollection<Datensatz>> getDataFromAzure()
{
string URL = URLForContent;
_client = new HttpClient();
_client.DefaultRequestHeaders.Add("ApiKey", PW);
var result1 = await _client.GetAsync(URL, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false);
if (result1.StatusCode == System.Net.HttpStatusCode.OK)
{
var result = await result1.Content.ReadAsStringAsync();
var ContentFromJson = JsonConvert.DeserializeObject<ObservableCollection<Datensatz>>(result);
string json = JsonConvert.SerializeObject(ContentFromJson, Formatting.Indented);
var filename = @"data.json";
var destinatioPath = Path.Combine(Android.App.Application.Context.GetExternalFilesDir(null).ToString(), filename);
File.WriteAllText(destinatioPath, json);
App.Database_Main.FillMainDBWithJsonEntrys();
return ContentFromJson;
}
return null;
}
您可以使用Task 的Wait 方法。如
Task result = getDataFromAzure()
result.Wait();
你也可以使用Thread.sleep(1000)让主线程休眠一段时间。但这会降低应用程序的功能,因为我们不知道异步方法需要多长时间,如果超过5秒会导致ANR。