欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.NET使用IResourceMonitor實現獲取資源信息

 更新時間:2024年01月22日 14:30:18   作者:rjcql  
在 Microsoft.Extensions.Diagnostics.ResourceMonitoring 包提供了一系列定制 API,專用于監(jiān)視 .NET 應用程序的資源利用率,本文將利用IResourceMonitor來實現獲取資源狀態(tài)信息,感興趣的可以了解下

寫在前面

 在 Microsoft.Extensions.Diagnostics.ResourceMonitoring 包提供了一系列定制 API,專用于監(jiān)視 .NET 應用程序的資源利用率。

為了讓控制臺輸出的樣式更美觀,可以安裝一下Spectre.Console這個包

本例主要通過 IResourceMonitor 來獲取資源狀態(tài)信息,該接口支持檢索與 CPU 和內存使用情況相關的數據,并且當前與 Windows 和 Linux 平臺兼容。

示例代碼中用到的 Microsoft.Extensions.Logging 類庫也需要通過NuGet安裝一下。 

代碼實現

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Diagnostics.ResourceMonitoring;
using Microsoft.Extensions.Logging;
using Spectre.Console;
 
public class Program
{
    public static void Main(string[] args)
    {
        var services = new ServiceCollection()
      .AddLogging()
      .AddResourceMonitoring();
 
        var provider = services.BuildServiceProvider();
 
        var monitor = provider.GetRequiredService<IResourceMonitor>();
        _ = StartMonitoringAsync(monitor, new CancellationToken());
 
        Console.ReadKey();
    }
     
    static async Task StartMonitoringAsync(IResourceMonitor monitor, CancellationToken cancellationToken)
    {
        var table = new Table()
            .Centered()
            .Title("Resource Monitoring", new Style(foreground: Color.Purple, decoration: Decoration.Bold))
            .Caption("Updates every three seconds. *GTD: Guaranteed ", new Style(decoration: Decoration.Dim))
            .RoundedBorder()
            .BorderColor(Color.Cyan1)
            .AddColumns(
            [
                new TableColumn("Time").Centered(),
                new TableColumn("CPU %").Centered(),
                new TableColumn("Memory %").Centered(),
                new TableColumn("Memory (bytes)").Centered(),
                new TableColumn("GTD / Max Memory (bytes)").Centered(),
                new TableColumn("GTD / Max CPU (units)").Centered(),
            ]);
 
        await AnsiConsole.Live(table)
            .StartAsync(async ctx =>
            {
                var window = TimeSpan.FromSeconds(3);
                while (cancellationToken.IsCancellationRequested is false)
                {
                    var utilization = monitor.GetUtilization(window);
                    var resources = utilization.SystemResources;
 
                    table.AddRow(
                        [
                            $"{DateTime.Now:T}",
                            $"{utilization.CpuUsedPercentage:p}",
                            $"{utilization.MemoryUsedPercentage:p}",
                            $"{utilization.MemoryUsedInBytes:#,#}",
                            $"{resources.GuaranteedMemoryInBytes:#,#} / {resources.MaximumMemoryInBytes:#,#}",
                            $"{resources.GuaranteedCpuUnits} / {resources.MaximumCpuUnits}",
                        ]);
 
                    ctx.Refresh();
                    await Task.Delay(window);
                }
            });
 
        Console.CancelKeyPress += (_, e) =>
        {
            e.Cancel = true;
        };
    }
 
}

調用示例

到此這篇關于.NET使用IResourceMonitor實現獲取資源信息的文章就介紹到這了,更多相關.NET獲取資源信息內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • c# 基于GMap.NET實現電子圍欄功能(WPF版)

    c# 基于GMap.NET實現電子圍欄功能(WPF版)

    這篇文章主要介紹了c# 基于GMap.NET實現電子圍欄功能(WPF版),幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#關鍵字之重載Overload介紹

    C#關鍵字之重載Overload介紹

    這篇文章介紹了C#關鍵字之重載Overload,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C# 泛型編譯特性對性能的影響小結

    C# 泛型編譯特性對性能的影響小結

    C#作為一種強類型語言,具有豐富的泛型支持,允許開發(fā)者編寫可以應對不同數據類型的通用代碼,這篇文章主要介紹了C# 泛型編譯特性對性能的影響 ,需要的朋友可以參考下
    2023-11-11
  • C#中Sleep() 和 Wait()的區(qū)別小結

    C#中Sleep() 和 Wait()的區(qū)別小結

    Sleep()和 Wait()是兩個不同的方法,用于控制線程的執(zhí)行,本文主要介紹了C#中Sleep()和Wait()的區(qū)別小結,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • C#?Windows?Forms中實現控件之間的連接線的方法詳解

    C#?Windows?Forms中實現控件之間的連接線的方法詳解

    這篇文章主要為大家詳細介紹了如何在C#?Windows?Forms應用程序中實現繪圖工具中多個控件之間的連接線功能,文中的示例代碼講解詳細,需要的可以參考下
    2024-02-02
  • C#有效防止同一賬號多次登錄(附三種方法)

    C#有效防止同一賬號多次登錄(附三種方法)

    這篇文章主要介紹了C#有效防止同一賬號多次登錄的方法,有效防止同一賬號多次登錄的方法很多,比如用數據庫來記錄用戶登錄情況、用Application來保存用戶登錄信息、用Cache來保存信息等,感興趣的小伙伴們可以參考一下
    2015-11-11
  • C# 動態(tài)輸出Dos命令執(zhí)行結果的實例(附源碼)

    C# 動態(tài)輸出Dos命令執(zhí)行結果的實例(附源碼)

    這篇文章主要介紹了C# 動態(tài)輸出Dos命令執(zhí)行結果的實例,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • 深入解析C#編程中struct所定義的結構

    深入解析C#編程中struct所定義的結構

    這篇文章主要介紹了C#編程中struct所定義的結構,與C++一樣,C#語言同時擁有類和結構,需要的朋友可以參考下
    2016-01-01
  • C#8.0 中開啟默認接口實現方法

    C#8.0 中開啟默認接口實現方法

    這篇文章主要介紹了C#8.0 中開啟默認接口實現方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧的相關資料
    2019-05-05
  • C#多線程處理多個隊列數據的方法

    C#多線程處理多個隊列數據的方法

    本文將結合實例代碼,介紹C#多線程處理多個隊列數據的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-06-06

最新評論