Partilhar via


EXTOBS0001: IResourceMonitor está obsoleto

A interface e as Microsoft.Extensions.Diagnostics.ResourceMonitoring.IResourceMonitor APIs relacionadas estão obsoletas a partir do .NET 9. Essas APIs serão removidas em uma versão futura. A funcionalidade de monitoramento de recursos foi substituída por uma abordagem baseada em métricas mais eficiente usando instrumentos observáveis.

As APIs a seguir são marcadas como obsoletas. O uso dessas APIs gera aviso EXTOBS0001 em tempo de compilação.

Soluções

Em vez de usar IResourceMonitor, opte por métricas de monitorização de recursos com instrumentos observáveis. A abordagem baseada em métricas fornece as mesmas informações de utilização de recursos (CPU, memória), mas integra-se melhor com sistemas modernos de observabilidade como o OpenTelemetry.

Exemplo de migração

Abordagem antiga usando IResourceMonitor"

services.AddResourceMonitoring();

// Inject and use IResourceMonitor
public class MyService
{
    private readonly IResourceMonitor _resourceMonitor;

    public MyService(IResourceMonitor resourceMonitor)
    {
        _resourceMonitor = resourceMonitor;
    }

    public void CheckResources()
    {
        var utilization = _resourceMonitor.GetUtilization(TimeSpan.FromSeconds(1));
        Console.WriteLine($"CPU: {utilization.CpuUsedPercentage}%");
        Console.WriteLine($"Memory: {utilization.MemoryUsedPercentage}%");
    }
}

Nova abordagem usando métricas:

services.AddResourceMonitoring();

// Configure metrics collection.
services.AddOpenTelemetry()
    .WithMetrics(builder =>
    {
        builder.AddMeter("Microsoft.Extensions.Diagnostics.ResourceMonitoring");
        builder.AddConsoleExporter();
    });

As métricas de monitoramento de recursos são publicadas automaticamente e podem ser consumidas por qualquer pipeline de métricas compatível com OpenTelemetry. Para obter mais informações, consulte Microsoft.Extensions.Diagnostics.ResourceMonitoring métricas.

Suprimir um aviso

Se você precisar usar as APIs obsoletas, poderá suprimir o aviso no código ou no arquivo de projeto.

Para suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desativar e reativar o aviso.

// Disable the warning.
#pragma warning disable EXTOBS0001

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore EXTOBS0001

Para suprimir todos os avisos de EXTOBS0001 em seu projeto, adicione uma propriedade <NoWarn> ao seu arquivo de projeto.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);EXTOBS0001</NoWarn>
  </PropertyGroup>
</Project>

Para obter mais informações, consulte Suprimir avisos.

Consulte também