2011-03-01 17 views
5

Sabit diski veri okuduğunda veya veri yazdığında bir olayı tetikleyecek bir şey yazmaya çalışıyorum. Bunun System.Diagnostics.PerformanceCounter kullanarak yapıldığını biliyorum ama bunu kendi başıma yapabilmek için yeterince iyi bilmiyorum. Birisi bana doğru yönde işaret edebilir mi? Ayrıca, hangi sürücünün okunmakta ya da yazıldığına dönecek olan olaydan hoşlanırım. Herhangi bir yardım takdir edilecektir. Bu arada, bu C#.Sabit disk için olay oluşturma Okuma ve yazma

+0

EVERY disk ile ilgili R/W için gerçekten bir etkinlik istiyorsanız, daha sonra, .NET'te uygulanamayan sözde bir dosya sistemi sürücüsünü uygulamanız gerekir. Daha net bir şekilde açıklayabilseydiniz, hedefiniz tam olarak belki de hedeflediğiniz sonuçları elde etmek için başka bir yaklaşım var ... – Yahia

+0

Yapmaya çalıştığım şey bir çeşit "Disk Işığı" yaratmaktır. Sabit sürücüde yazma işlemi devam ettiğinde kırmızı renkte yanıp sönen ve bir okuma işlemi devam ederken yeşil renkte yanıp sönen tepsiye oturan bir şey. – Icemanind

+0

Bu daha kolay bir özellik midir? YA DA GÜVENLİĞİ KABUL ETMEK İSTİYORSUNUZ (örn. Disk-aktivitelerini izleme)? – Yahia

cevap

8

olayları yaratmaz aşağıdaki ancak (yorum göre) tepsideki bilgileri görüntülemek için bir zamanlayıcı ile birlikte kullanabilirsiniz:

using System.Diagnostics; 

private PerformanceCounter diskRead = new PerformanceCounter(); 
private PerformanceCounter diskWrite = new PerformanceCounter(); 

diskRead.CategoryName = "PhysicalDisk"; 
diskRead.CounterName = "Disk Reads/sec"; 
diskRead.InstanceName = "_Total"; 

diskWrite.CategoryName = "PhysicalDisk"; 
diskWrite.CounterName = "Disk Writes/sec"; 
diskWrite.InstanceName = "_Total"; 

_Total

TÜM diskler içindir ... belirli almak mevcut disklerin instanceNames kullanın:

var cat = new System.Diagnostics.PerformanceCounterCategory("PhysicalDisk"); 
var instNames = cat.GetInstanceNames(); 

o zaman ilgilenen her örneği için diskRead/diskWrite bir çift oluşturabilirsiniz içinde ... bir zamanlayıcı ile birlikte bu nasıl kullanılacağına ilişkin bir örnek için bkz this.

+0

Bu, CD sürücüler için okuma/yazma bilgisi de alacak mı? Bunu belirtmediğimi biliyorum, ama sadece merak ediyorum – Icemanind

+1

@icemanind emin değilim (şu anda test edemezsiniz) ... 'PerformanceCounterCategory.GetCategories() 'diyerek tüm mevcut kategorileri inceleyebilirsiniz ... Bulunduğunuz her Kategoride 'GetInstanceNames()' diyerek tüm örnekleri bulabilirsiniz ... HTH – Yahia