Либо идти асинхронно до конца, либо синхронно до конца. Старайтесь не смешивать два.
Task Ilogin()
- это асинхронный метод, в то время как void Logmein()
не
это нужно сделать асинхронным, а затем ждать
private async Task Logmein() {
await Ilogin();
}
Нет необходимости в методах Task.Run
с огнем и забывать, поскольку их исключение не может быть перехвачено. Кроме того, блокирующие вызовы, такие как Task.Wait()
и Task.Result
, могут привести к тупикам.
если нужно вызвать Logmein()
, попробуйте поместить его в обработчик событий, который позволит async void
, чтобы его можно было ожидать.
private async void SomeHandler(object sender, EventArgs args) {
await Logmein();
}
Если это так, вы можете избежать Logmein()
и ждать Ilogin()
напрямую.
Ссылка Async / Await - Лучшие практики асинхронного программирования