Programming/C# & Unity

C# perfmon 샘플 코드

장형이 2023. 8. 26. 01:13
internal class Program
{
    const string CategoryName = "JangHyeong";
    const string CounterName = "Test";

    static private bool looping = true;

    // 1초마다 0~99 사이의 값으로 카운터를 남긴다.
    static void Loop()
    {
        var random = new Random();
        var counter = new PerformanceCounter(CategoryName, CounterName, false);
        while (looping)
        {
            counter.RawValue = random.Next(100);
            Thread.Sleep(1000);
        }
    }

    static void Main(string[] args)
    {
        // 없으면 카운터를 생성한다.
        if (PerformanceCounterCategory.Exists(CategoryName) == false)
        {
            CounterCreationData testCounterCreationData = new CounterCreationData();
            testCounterCreationData.CounterName = CounterName;
            testCounterCreationData.CounterType = PerformanceCounterType.NumberOfItems32;

            var jangHyeongCounters = new CounterCreationDataCollection();
            jangHyeongCounters.Add(testCounterCreationData);

            PerformanceCounterCategory.Create(CategoryName, "JangHyeong Test Category", PerformanceCounterCategoryType.SingleInstance, jangHyeongCounters);
        }

        var thread = new Thread(Loop);
        thread.Start();

        Console.WriteLine("Start.");
        Console.ReadLine();
        Console.WriteLine("End.");

        looping = false;
    }
}

1초마다 "JangHyeong"-"Test" 카운터에 0~99의 랜덤한 숫자로 지표를 남기는 프로그램 샘플 코드.

테스트하려고 짰다가 나중에 다시 써먹으려고 포스팅 한다.