Rehber C# ile işlemci kullanımını dinamik olarak öğrenme

Merhaba 😇

Bugün sizlere C# dili işlemci kullanımını dinamik olarak göstermeyi göstereceğim.

Hadi başlayalım.

Öncelike proje için gerekli bilgilendirmeyi yapayım.


Bu proje içinde Thread ve PerformanceCounter kullanacağız.

Şimdi tanımlarıyla başlayalım;

Thread:
Her program üzerinde 1 Thread çalışır normalde. Buna Main Thread diyoruz. Tek thread çalışırken aynı anda sadece tek işlem yapılabilir. Bir işlem bitmeden diğer işleme geçilemez. İşlem esnasında program donar. Ancak Cross-Thread ile bu sorun ortadan kalkıyor.

PerformanceCounter: Windows üzerine yer alan bazı kullanımları ilgili sınıflarından çekmemiz için oluşturulmuş bir .NET kitaplığı.

Öncelike bir Form veya Konsol oluşturalım. Ben Form oluşturacağım.

Gördüğünüz üzere bu şekilde bir tasarım yaptım.
  • 2 adet Label.
  • 1 adet Buton.
1678971154298.png


Şimdi kodlamaya geçelim;

Gerekli kitaplıklar;


C#:
using System;
using System.Diagnostics;
using System.Management;
using System.Threading;
using System.Windows.Forms;

Öncelike Cross-Thread hata vermemesi için hataları kapatıyoruz.

1678971226327.png


C#:
// Cross-thread hatasını engellemek için
CheckForIllegalCrossThreadCalls = false;

Döngüyü kontrol etmek için bir bool tanımlıyoruz.

1678971274338.png


C#:
// Döngü durumu
bool thread_status = true;

Şimdi butona basınca Thread'i çalıştıracak kodları yazıyoruz.

1678971294891.png


C#:
// Thread'i başlatıyoruz
Thread thread_cpu = new Thread(calculate_usage);
thread_cpu.Start();

Şimdi ise işlemlerimizi yapalım;

1678971348378.png


C#:
        private void calculate_usage(){

            // İşlemci bilgisini çeker
            try{
                ManagementObjectSearcher get_cpu_info = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor");
                foreach (ManagementObject query_cpu in get_cpu_info.Get()){
                    CPU_Info.Text = "";
                    CPU_Info.Text += query_cpu["Name"] + " / Çekirdek: " + query_cpu["NumberOfCores"] + " / İç Çekirdek: " + query_cpu["NumberOfLogicalProcessors"];
                }
            }catch (ManagementException){

            }

            // İşlemci kullanımını çeker
            while (thread_status){
                PerformanceCounter cpu_usage = new PerformanceCounter("Processor", "% Processor Time", "_Total");
                dynamic zero_value = cpu_usage.NextValue();
                Thread.Sleep(1000 - DateTime.Now.Millisecond);
                dynamic last_value = cpu_usage.NextValue();
                CPU_Usage.Text = string.Format("İşlemci Kullanımı: %{0:0.00}", last_value);
            }
        }

Ardından Form'un kapatma eventi devreye girdiğinde döngüyü durduruyoruz.

1678971391365.png


C#:
// Programı kapatmadan önce döngüyü durduruyoruz
thread_status = false;
Application.Exit();

1678971426337.png


Gördüğünüz üzere işlemci adını, çekirdek sayısını, iç çekirdek sayısını ve işlemci kullanımını 1 saniye de bir güncelliyor.

Umarım işinize yaramıştır.
Yazılım rehberlerimin devamı gelecek.

İyi çalışmalar, kolay gelsin 😎
 
Son düzenleme:
Merhaba, Opengl kütüphanesi hakkında bir rehber hazırlayabilirmisiniz? İnternette Türkçe kaynak neredeyse hiç bulamadım.
 

Technopat Haberler

Geri
Yukarı