Microsoft.Extensions.Diagnostics.ResourceMonitoring.IResourceMonitor從 .NET 9 開始,介面和相關 API 已過時。 這些 API 將在未來的版本中移除。 資源監控功能已被使用可觀察工具的更有效率的指標型方法所取代。
下列 API 已標示為已過時。 使用這些 API 會在編譯階段產生警告 EXTOBS0001 。
- IResourceMonitor
- ResourceMonitoringOptions.CollectionWindow
- ResourceMonitoringOptions.SamplingInterval
- ResourceMonitoringBuilderExtensions
- ResourceUtilization
- IResourceMonitorBuilder
- IResourceUtilizationPublisher
- ISnapshotProvider
- Snapshot
- SystemResources
- ResourceMonitoringServiceCollectionExtensions.AddResourceMonitoring(IServiceCollection, Action<IResourceMonitorBuilder>)
因應措施
不要使用 IResourceMonitor,而是切換至搭配可觀察工具使用資源監控指標。 以指標為基礎的方法提供相同的資源使用率資訊 (CPU、記憶體),但與 OpenTelemetry 等現代可觀測性系統整合得更好。
移轉範例
舊方法使用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}%");
}
}
使用指標的新方法:
services.AddResourceMonitoring();
// Configure metrics collection.
services.AddOpenTelemetry()
.WithMetrics(builder =>
{
builder.AddMeter("Microsoft.Extensions.Diagnostics.ResourceMonitoring");
builder.AddConsoleExporter();
});
資源監控指標會自動發佈,並可由任何與 OpenTelemetry 相容的指標管道使用。 如需詳細資訊,請參閱 Microsoft.Extensions.Diagnostics.ResourceMonitoring 指標。
隱藏警告
如果您必須使用過時的 API,您可以在程式碼或專案檔中隱藏警告。
若要僅抑制單一違規,請將預處理器指示詞新增至來源檔案以停用,然後重新啟用警告。
// Disable the warning.
#pragma warning disable EXTOBS0001
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore EXTOBS0001
若要隱藏 EXTOBS0001 專案中的所有警告,請將屬性新增至 <NoWarn> 專案檔。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);EXTOBS0001</NoWarn>
</PropertyGroup>
</Project>
如需詳細資訊,請參閱隱藏警告。