Я обычно программирую веб-серверы, и сначала я думал, что должна быть непрерывная цепочка методов, возвращающих задачу, поэтому заполнение стека может запрашивать базу данных, если это будет сделано.Как C# обрабатывать async void
Недавно я увидел МОФ код, который делает что-то вроде этого:
public async void Execute(object parameter)
{
await ExecuteAsync(parameter);
}
Called в обработчик событий. Пользовательский интерфейс кажется отзывчивым, поэтому я думаю, что он работает. Как это работает? Как это перевести на aspnet?
Что происходит, когда я не жду задания? – user2029276
@ user2029276 Подсистема asp.net не знает о задаче и может разорвать домен приложения для веб-сайта до того, как функция завершила выполнение, вызвав работу, которую вы сказали, что функция должна быть потеряна и никогда не завершена. Причина, по которой вы можете избежать этого в WPF, - это то, что приложение AppDomain не будет случайно разорвано, пока пользователь использует программу, если в программе работает AppDomain. Неактивный пользователь на сайте asp.net мог бы отключить AppDomain и даже не заметить его. –