Я пишу приложение winform и хотел бы отправить запрос Http Post и получить ответ до загрузки основной формы. Пока что у меня следующая ситуация:
Если я сделаю это, загрузка формы отправит запрос, и форма будет загружена немедленно. Ответ на запрос будет получен позже, но в то же время можно нажать любую кнопку в форме (не идеально)
private async void Form1_Load(object sender, EventArgs e)
{
//client is a HttpClient
//byteContent is a ByteArrayContent
using (HttpResponseMessage response = await client.PostAsync("theUrl",
byteContent))
{
response.EnsureSuccessStatusCode();
Trace.WriteLine(response.ToString());
}
}
Итак, я изменил код на это и подумал, что форма загрузится после получения ответа на запрос. Однако вместо этого происходит следующее: форма появляется до получения ответа, но мышь показывает вращающуюся загрузочную форму, поэтому любые кнопки в форме недоступны. После получения ответа кнопки в форме становятся доступными.
Это правильно, но выглядит не очень хорошо.
private async void Form1_Load(object sender, EventArgs e)
{
//client is a HttpClient
//byteContent is a ByteArrayContent
var PostTask = client.PostAsync("theUrl", byteContent);
PostTask.Wait(); //blocking here
using (HttpResponseMessage response = PostTask.Result)
{
response.EnsureSuccessStatusCode();
Trace.WriteLine(response.ToString());
}
}
Как правильно сделать то, что я хочу:
Что форма показывает только после успешного получения ответа?