Вы не можете сделать метод Main()
асинхронным, и, таким образом, вы можете использовать ключевое слово await
в теле функции Main()
.
Простой обходной путь, который вы можете реализовать, отредактировав текущий код, заставляет вашу функцию TaskTest()
возвращать void
, поэтому вам не нужно ждать ее вызова.
Пример:
public MainPage()
{
InitializeComponent();
TaskTest();
}
private async void TaskTest()
{
try
{
using (WebClient client = new WebClient())
{
label.Text = await client.DownloadStringTaskAsync("https://www.example.com/return.php");
}
}
catch (Exception)
{
throw;
}
}
Редактировать
Если вам придется ждать возвращаемого значения асинхронного вызова без использования await
, вы можете продолжить.и используйте некоторое время, чтобы проверить, завершен ли Task
или нет.
Task<string> accessTokenTask = Task.Run<string>(() => MethodToGetToken());
// wait until operation is done.
while(!accessTokenTask.IsCompleted)
{
accessTokenTask.Wait():
}
// once the task completes, the runtime will step out of the while loop
// and you can access your Token in the Result
string token = accessTokenTask.Result;
Надеюсь, что это отвечает на ваш вопрос.