Я создаю TagHelper для RazorPage.Единственное требование класса TagHelper
- переопределение метода процесса.
Вот подпись (и спасибо за решение Стивен, давайте просто предположим, что ProcessAsync не существует, поэтому мы все еще можем ответить на вопрос).
public override void Process(TagHelperContext context, TagHelperOutput output)
Тело очень простое
if(_roleService.CanRegisterAsync().Result)
{
output.SuppressOutput();
}
Я слышал, что взаимные блокировки могут быть вызваны вызовом .Результат асинхронных методов, поэтому я не хочу вызывать его, как написано выше, потому что кажется, что я могу столкнуться с некоторыми проблемами.
Итак, я изменяю виртуальное переопределение, добавляя async к
public override async void Process(TagHelperContext context, TagHelperOutput output)
, а тело к
if(await _roleService.CanRegisterAsync())
{
output.SuppressOutput();
}
Это компилируется нормально, но output.SupressOutput () не делаетКажется, что больше не имеет никакого эффекта, поэтому я вынужден вернуться к исходному коду, который кажется плохой идеей.
Есть ли лучший способ справиться с этой ситуацией, чтобы я не столкнулся с тупиками, о которых многие говорят в других асинхронных сообщениях?