Избегайте ожидания внешних задач в ASP.NET Core.C#

Место общения программистов C#
Ответить
Anonymous
 Избегайте ожидания внешних задач в ASP.NET Core.

Сообщение Anonymous »

Я проанализировал свой проект с помощью Microsoft.Visual Studio.Threading.Analyzers.
Я получаю следующее предупреждение о задаче ожидания:
Изображение

Ссылка: https://github.com/Microsoft/vs-threading/blob/ main/doc/analyzers/VSTHRD003.md
Не совсем понимаю, это как-то связано с контекстом синхронизации? Я использую ASP.NET Core, но насколько я понимаю его там нет.
public async Task WaitTestAsync(Task task)
{
await Task.Delay(1000000);
await task;
}

Как сделать этот код действительным? Пробовал написать это через JoinableTaskFactory, но предупреждение не работает.
string result;

JoinableTask joinableTask = joinableTaskFactory.RunAsync(async () =>
{
result = await task;
});

Аналогичное предупреждение появляется в моем промежуточном программном обеспечении при ожидании t:
public class GrpcExceptionInterceptor : Interceptor
{
private readonly ILogger _logger;

public GrpcExceptionInterceptor(ILogger logger)
{
_logger = logger;
}

public override AsyncUnaryCall AsyncUnaryCall(
TRequest request,
ClientInterceptorContext context,
AsyncUnaryCallContinuation continuation)
{
var call = continuation(request, context);

return new AsyncUnaryCall(HandleResponse(call.ResponseAsync), call.ResponseHeadersAsync, call.GetStatus, call.GetTrailers, call.Dispose);
}

private async Task HandleResponse(Task t)
{
try
{
var response = await t;
return response;
}
catch (RpcException e)
{
_logger.LogError("Error calling via grpc: {Status} - {Message}", e.Status, e.Message);
return default;
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... p-net-core
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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