【发布时间】:2020-08-04 03:14:27
【问题描述】:
我只有一种 Api Request 方法如下
private async Task<Site> getSiteAsync(string siteId)
{
Site site = null;
var response = await httpClient.SendAsync(
new HttpRequestMessage(HttpMethod.Get, httpClient.BaseAddress + $"api/sites/{siteId}"));
if (response.IsSuccessStatusCode)
{
var stream = await response.Content.ReadAsStreamAsync();
site = await JsonSerializer.DeserializeAsync<Site>(stream, serializerOptions);
}
return site;
}
当我尝试从我的 MainClass 调用它时,第一个调用 (a) 工作正常,但 b、c 和 d 它们都返回给我Status = WaitingForActivation。
private readonly HttpClient httpClient = new HttpClient();
private readonly JsonSerializerOptions serializerOptions = new JsonSerializerOptions();
public MainWindow()
{
httpClient.BaseAddress = new Uri($"http://localhost:5000/MyApi/");
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
serializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
var a = getSiteAsync("0001"); << I only get the value of this call.
var b = getSiteAsync("0002");
var c = getSiteAsync("0003");
var d = getSiteAsync("0004");
InitializeComponent();
}
我怎样才能得到 b,c 和 d 的结果?
【问题讨论】:
-
你应该等待电话。
-
@mm8 怎么样? ,我不能让我的 Constructor(MainWindow) 成为异步方法。有没有办法做到这一点?
-
您可以例如处理
Loaded事件。例如,请参阅我的答案。
标签: c# wpf .net-core async-await asp.net-core-webapi