Почему иногда ключевое слово asyn c не используется с методом с суффиксом asyn c? - PullRequest
1 голос
/ 12 марта 2020

Я читал о проверке состояния в asp. net ядре.

Я видел этот код.

public class ExampleHealthCheck : IHealthCheck
{
    public Task<HealthCheckResult> CheckHealthAsync(
        HealthCheckContext context,
        CancellationToken cancellationToken = default(CancellationToken))
    {
        var healthCheckResultHealthy = true;

        if (healthCheckResultHealthy)
        {
            return Task.FromResult(
                HealthCheckResult.Healthy("A healthy result."));
        }

        return Task.FromResult(
            HealthCheckResult.Unhealthy("An unhealthy result."));
    }
}

В приведенном выше коде метод CheckHealthAsync является не помечено как асин c. Это сделано таким образом, чтобы поддерживать синхронную и асинхронную функцию?

Ответы [ 2 ]

6 голосов
/ 12 марта 2020

Ответ состоит из двух частей:

  • Async Суффикс используется для удовлетворения IHealthCheck требований к интерфейсу. Это просто соглашение об именах (хотя и важное), которое не имеет особого значения в самом языке.
  • async не используется, потому что реализация метода не нужна (т.е. не имеет await s)

Обратите внимание, что реализация также использует Task.FromResult вместо непосредственного возврата значения. Это также делается для удовлетворения требований интерфейса IHealthCheck, который разработан для , позволяющего для реализации быть асинхронным.

0 голосов
/ 12 марта 2020

async позволяет использовать только await, если вы ищете способ определить, работает ли что-то асинхронно c, тип возврата Task - ваш лучший совет.

...