Почему async await выдает исключение NullReferenceException? ⇐ C#

Место общения программистов C#
Anonymous
Почему async await выдает исключение NullReferenceException?

Сообщение Anonymous »

Мой код выглядит примерно так

var userStartTask = LroMdmApiService.AddUser(user);
// .... do some stuff
await userStartTask;


Когда AddUser() генерирует исключение, оно отображается как NullReferenceException. Он не ждет await.

Но если я структурирую код вот так...

var result = await LroMdmApiService.AddUser(user);


Тогда исключения перехватываются правильно. Может кто-нибудь сказать мне, что здесь происходит?

Вот полный код, показывающий проблему. Какова наилучшая практика для такого сценария?

class Program
{
private static void Main(string[] args)
{
CallAsync();
Console.ReadKey();
}

public static async void CallAsync()
{
var task = CallExceptionAsync();
ThrowException("Outside");
await task;
}

public static Task CallExceptionAsync()
{
return Task.Run(() =>
{
ThrowException("Inside");
});

}

public static void ThrowException(string msg)
{
throw new Exception(msg);
}
}


Подробнее здесь: https://stackoverflow.com/questions/323 ... eexception

Вернуться в «C#»