У C #, коли ви переосмислюєте метод, дозволено робити асинхронізацію override, коли оригінальний метод не був. Це здається поганою формою.
Приклад, який привів мене до цього, був таким - мене запросили, щоб допомогти у вирішенні проблеми з навантаженням. Приблизно 500 одночасних користувачів процес входу в систему переривається в циклі переадресації. IIS реєстрував винятки з повідомленням "Асинхронний модуль або обробник виконаний, поки асинхронна операція ще тривала". Деякі пошуки змусили мене думати, що хтось зловживає async void
, але мій швидкий пошук у джерелі нічого не міг знайти.
На жаль, я шукав "async \ svoid" (пошук регулярних виразів), коли мені слід було шукати щось подібне до "async \ s [^ T]" (якщо припустити, що завдання не повністю кваліфіковане ... ви отримаєте бал).
Пізніше я знайшов async override void onActionExecuting(...
у базовому контролері. Очевидно, що це мала бути проблема, і це було. Виправлення цієї проблеми (зробити її синхронною на даний момент) вирішило проблему.
Повернення до питання: Чому о, чому ви можете позначити переопределення як асинхронізацію, коли код виклику ніколи не може його чекати?
Task
.