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.
Şimdi kodlamaya geçelim;
Gerekli kitaplıklar;
Öncelike Cross-Thread hata vermemesi için hataları kapatıyoruz.
Döngüyü kontrol etmek için bir bool tanımlıyoruz.
Şimdi butona basınca Thread'i çalıştıracak kodları yazıyoruz.
Şimdi ise işlemlerimizi yapalım;
Ardından Form'un kapatma eventi devreye girdiğinde döngüyü durduruyoruz.
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

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.
Ş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.
C#:
// Cross-thread hatasını engellemek için
CheckForIllegalCrossThreadCalls = false;
Döngüyü kontrol etmek için bir bool tanımlıyoruz.
C#:
// Döngü durumu
bool thread_status = true;
Şimdi butona basınca Thread'i çalıştıracak kodları yazıyoruz.
C#:
// Thread'i başlatıyoruz
Thread thread_cpu = new Thread(calculate_usage);
thread_cpu.Start();
Şimdi ise işlemlerimizi yapalım;
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.
C#:
// Programı kapatmadan önce döngüyü durduruyoruz
thread_status = false;
Application.Exit();
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: