CEvent

Sınıf CEvent bir nesneyi temsil eden bir "olay" — başka bir olay oluştuğunu bildirmek bir iş parçacığı veren eşitleme nesnesi. Olaylar, bir iplik ne zaman görevini gerçekleştirmek gerektiğinde kullanışlıdır. Örneğin, verileri bir veri arşivi kopyalar bir iplik, yeni veriler kullanılabilir olduğunda size bildirilmesini gerekir. Yeni veri bulunduğunda kopya iş parçacığı bildirmek için bir CEvent nesnesi kullanarak, iş parçacığı görevini en kısa zamanda gerçekleştirebilirsiniz.

CEvent nesneleri iki türü vardır: el ile ve otomatik. CEvent nesnesini el ile başka bir işlevi kadar SetEvent veya ResetEvent tarafından belirlenen bir durumda kalır. En az bir iş parçacığı yayımlandıktan sonra otomatik CEvent nesne otomatik olarak bir nonsignaled (kullanılamaz) durumuna döndürür.

Bir CEvent nesne kullanmak için bunu gerektiğinde CEvent nesnesi oluşturun. Bekleyin istediğiniz olayın adını belirtin ve uygulamanızın başlangıçta kendi. Kurucunun döndüğünde olayın ardından erişebilirsiniz. SetEvent sinyal (kullanılabilir yapmak) olay nesnesini çağırın ve işiniz bittiğinde Unlock arayın kontrollü kaynağa erişme.

CEvent nesneleri kullanmak için alternatif bir yöntem CEvent türünde bir değişken veri üyesi kontrol etmek istediğiniz sınıfı eklemektir. Denetlenen nesne yapımı sırasında olayın ilk sinyal, olay türü nesne size belirterek CEvent veri üyesinin kurucusunu çağırmak istiyorum, eğer (işlem sınırları boyunca kullanılacaktır) olayın adını ve istenilen güvenlik öznitelikleri.

Bu şekilde bir CEvent nesnesi tarafından denetlenen bir kaynağa erişmek için önce ya da CSingleLocktüründe bir değişken oluşturmak veya CMultiLockyazın , kaynağın erişim üye işlevi. Sonra kilit nesnenin kilit üye işlev (örneğin, CMultiLock::Lock) arayın. Bu noktada, iplik ya da kaynağa erişmek, kaynağının yayımlanması ve erişmek ya da yayımlanması için kaynak ve zaman aşımı, kaynağa erişmek başarısız beklemek bekleyin. Her durumda, kaynak, bir iş parçacığı güvenli şekilde erişilmiş. Kaynağı serbest bırakmak için olay nesnesi sinyal ve sonra kilit nesnenin kilidini üye işlev (örneğin CMultiLock::Unlock) için SetEvent arayın veya kilit nesne kapsamı dışında kalan izin.

CEvent nesneler hakkında daha fazla bilgi için bkz: yazı Multithreading: eşitleme sınıflarının nasıl kullanılacağını Visual c++ Programcı Kılavuzu.

# include lt;afxmt.h>

Sınıf üyeleri |nbsp; Temel sınıf | Hiyerarşi çizelgesi

Ör&neknbsp; mfc örnek MTGDI

Index