CWinThread
Sınıf
Bir uygulama içindeki yürütme iş parçacığını temsil eder.
Sözdizimi
class CWinThread : public CCmdTarget
Üyeler
Ortak Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
CWinThread::CWinThread |
Bir CWinThread nesne oluşturur. |
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
CWinThread::CreateThread |
Bir CWinThread nesnenin yürütülmesini başlatır. |
CWinThread::ExitInstance |
İş parçacığınız sonlandırıldığında temizlemek için geçersiz kılın. |
CWinThread::GetMainWnd |
İş parçacığının ana penceresine bir işaretçi alır. |
CWinThread::GetThreadPriority |
Geçerli iş parçacığının önceliğini alır. |
CWinThread::InitInstance |
İş parçacığı örneği başlatma gerçekleştirmek için geçersiz kılın. |
CWinThread::IsIdleMessage |
Özel iletileri denetler. |
CWinThread::OnIdle |
İş parçacığına özgü boşta kalma süresi işlemesi gerçekleştirmek için geçersiz kılın. |
CWinThread::PostThreadMessage |
Başka CWinThread bir nesneye ileti postalar. |
CWinThread::PreTranslateMessage |
İletileri Windows işlevlerine TranslateMessage ve DispatchMessage 'a göndermeden önce filtreler. |
CWinThread::ProcessMessageFilter |
Belirli iletileri uygulamaya ulaşmadan önce durdurur. |
CWinThread::ProcessWndProcException |
İş parçacığının iletisi ve komut işleyicileri tarafından oluşan tüm işlenmeyen özel durumları durdurur. |
CWinThread::PumpMessage |
İş parçacığının ileti döngüsünü içerir. |
CWinThread::ResumeThread |
bir iş parçacığının askıya alma sayısını azaltma. |
CWinThread::Run |
İleti pompalı iş parçacıkları için kontrol işlevi. Varsayılan ileti döngüsünü özelleştirmek için geçersiz kılın. |
CWinThread::SetThreadPriority |
Geçerli iş parçacığının önceliğini ayarlar. |
CWinThread::SuspendThread |
bir iş parçacığının askıya alma sayısını artırır. |
Ortak İşleçler
Veri Akışı Adı | Açıklama |
---|---|
CWinThread::operator HANDLE |
Nesnenin tutamacını CWinThread alır. |
Ortak Veri Üyeleri
Veri Akışı Adı | Açıklama |
---|---|
CWinThread::m_bAutoDelete |
İş parçacığı sonlandırma sırasında nesnenin yok edilip edilmeyeceğini belirtir. |
CWinThread::m_hThread |
Geçerli iş parçacığı için tanıtıcı. |
CWinThread::m_nThreadID |
Geçerli iş parçacığının kimliği. |
CWinThread::m_pActiveWnd |
Bir OLE sunucusu yerinde etkin olduğunda kapsayıcı uygulamasının ana penceresine yönelik işaretçi. |
CWinThread::m_pMainWnd |
Uygulamanın ana penceresine bir işaretçi tutar. |
Açıklamalar
Yürütmenin ana iş parçacığı genellikle öğesinden CWinApp
türetilen bir nesne tarafından sağlanır ve CWinApp
öğesinden CWinThread
türetilir. Ek CWinThread
nesneler, belirli bir uygulama içinde birden çok iş parçacığına izin verir.
Destekleyen iki genel iş parçacığı CWinThread
türü vardır: çalışan iş parçacıkları ve kullanıcı arabirimi iş parçacıkları. Çalışan iş parçacıklarının ileti pompası yoktur: örneğin, elektronik tablo uygulamasında arka plan hesaplamaları yapan bir iş parçacığı. Kullanıcı arabirimi iş parçacıklarının bir ileti pompası ve sistemden alınan işleme iletileri vardır. CWinApp
ve ondan türetilen sınıflar, kullanıcı arabirimi iş parçacıklarına örnektir. Diğer kullanıcı arabirimi iş parçacıkları da doğrudan öğesinden CWinThread
türetilebilir.
Sınıfın CWinThread
nesneleri genellikle iş parçacığı süresi boyunca bulunur. Bu davranışı değiştirmek istiyorsanız olarak ayarlayın m_bAutoDelete
FALSE
.
sınıfı CWinThread
, kodunuzu ve MFC'nizi iş parçacığını tamamen güvenli hale getirmek için gereklidir. Çerçeve tarafından iş parçacığına özgü bilgileri korumak için kullanılan iş parçacığı yerel verileri nesneler tarafından CWinThread
yönetilir. İş parçacığı yerel verilerini işlemek için bu CWinThread
bağımlılık nedeniyle, MFC kullanan tüm iş parçacıkları MFC tarafından oluşturulmalıdır. Örneğin, çalışma zamanı işlevi _beginthread
_beginthreadex
tarafından oluşturulan bir iş parçacığı MFC API'lerini kullanamaz.
İş parçacığı oluşturmak için çağrısında bulunur AfxBeginThread
. Çalışan mı yoksa kullanıcı arabirimi iş parçacığı mı istediğinize bağlı olarak iki form vardır. Kullanıcı arabirimi iş parçacığı istiyorsanız, türetilmiş sınıfınızın CWinThread
işaretçisine CRuntimeClass
geçinAfxBeginThread
. Çalışan iş parçacığı oluşturmak istiyorsanız, denetim işlevine AfxBeginThread
bir işaretçiye ve denetim işlevine parametresine geçin. Hem çalışan iş parçacıkları hem de kullanıcı arabirimi iş parçacıkları için önceliği, yığın boyutunu, oluşturma bayraklarını ve güvenlik özniteliklerini değiştiren isteğe bağlı parametreler belirtebilirsiniz. AfxBeginThread
yeni CWinThread
nesnenize bir işaretçi döndürür.
çağırmak AfxBeginThread
yerine - türetilmiş bir CWinThread
nesnesi oluşturabilir ve ardından çağırabilirsiniz CreateThread
. Bu iki aşamalı derleme yöntemi, nesneyi ardışık oluşturma ve iş parçacığı yürütme sonlandırmaları arasında yeniden kullanmak CWinThread
istiyorsanız yararlıdır.
hakkında CWinThread
daha fazla bilgi için C++ ve MFC ile Çoklu İş Parçacığı Kullanımı, Çoklu İş Parçacığı Kullanımı: Kullanıcı Arabirimi İş Parçacıkları Oluşturma, Çoklu İş Parçacığı Kullanımı: Çalışan İş Parçacıkları Oluşturma ve Çoklu İş Parçacığı Kullanımı: Eşitleme Sınıflarını Kullanma makalelerine bakın.
Devralma Hiyerarşisi
CWinThread
Gereksinimler
Üstbilgi: afxwin.h
CWinThread::CreateThread
Çağırma işleminin adres alanı içinde yürütülecek bir iş parçacığı oluşturur.
BOOL CreateThread(
DWORD dwCreateFlags = 0,
UINT nStackSize = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);
Parametreler
dwCreateFlags
İş parçacığının oluşturulmasını denetleen ek bir bayrak belirtir. Bu bayrak iki değerden birini içerebilir:
CREATE_SUSPENDED
bir askıya alma sayısı ile iş parçacığını başlatın. İş parçacığı çalışmaya başlamadan önce nesneninCWinThread
veya türetilmiş sınıfınızın herhangi bir üyesi gibim_bAutoDelete
herhangi bir üye verilerini başlatmak istiyorsanız kullanınCREATE_SUSPENDED
. Başlatma işleminiz tamamlandıktan sonra, iş parçacığını çalıştırmak için komutunuCWinThread::ResumeThread
kullanın. İş parçacığı çağrılana kadarCWinThread::ResumeThread
yürütülmeyecek.0 Oluşturma işleminden hemen sonra iş parçacığını başlatın.
nStackSize
Yeni iş parçacığı için yığının bayt cinsinden boyutunu belirtir. 0 ise, yığın boyutu varsayılan olarak işlemin birincil iş parçacığıyla aynı boyuta sahip olur.
lpSecurityAttrs
İş parçacığının güvenlik özniteliklerini belirten bir SECURITY_ATTRIBUTES
yapıya işaret eder.
Dönüş Değeri
İş parçacığı başarıyla oluşturulursa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Bir iş parçacığı nesnesi oluşturmak ve bir adımda yürütmek için kullanın AfxBeginThread
. ardışık oluşturma ve iş parçacığı yürütmeleri sonlandırma arasında iş parçacığı nesnesini yeniden kullanmak istiyorsanız kullanın CreateThread
.
CWinThread::CWinThread
Bir CWinThread
nesne oluşturur.
CWinThread();
Açıklamalar
İş parçacığının yürütülmesine başlamak için üye işlevini çağırın CreateThread
. İş parçacıklarını genellikle bu oluşturucuyu ve CreateThread
çağıracak olan öğesini çağırarak AfxBeginThread
oluşturursunuz.
CWinThread::ExitInstance
İş parçacığının bu örneğinden çıkmak için nadiren geçersiz kılınan Run
üye işlevinin içinden çerçeve tarafından çağrılır veya bir çağrı InitInstance
başarısız olursa.
virtual int ExitInstance();
Dönüş Değeri
İş parçacığının çıkış kodu; 0 hata olmadığını, 0'dan büyük değerler ise hata olduğunu gösterir. Bu değer çağrılarak GetExitCodeThread
alınabilir.
Açıklamalar
Bu üye işlevini üye işlevi dışında hiçbir yerden Run
çağırmayın. Bu üye işlevi yalnızca kullanıcı arabirimi iş parçacıklarında kullanılır.
Bu işlevin varsayılan uygulaması ise m_bAutoDelete
TRUE
nesnesini silerCWinThread
. İş parçacığınız sonlandırıldığında ek temizleme gerçekleştirmek istiyorsanız bu işlevi geçersiz kılın. uygulamanız ExitInstance
, kodunuz yürütüldükten sonra temel sınıfın sürümünü çağırmalıdır.
CWinThread::GetMainWnd
Uygulamanız bir OLE sunucusuysa, doğrudan uygulama nesnesinin üyesine başvurmak yerine uygulamanın etkin ana penceresine bir işaretçi almak için m_pMainWnd
bu işlevi çağırın.
virtual CWnd* GetMainWnd();
Dönüş Değeri
Bu işlev, iki pencere türünden birine işaretçi döndürür. İş parçacığınız bir OLE sunucusunun parçasıysa ve etkin bir kapsayıcının içinde etkin olan bir nesneye sahipse, bu işlev nesnenin CWinApp::m_pActiveWnd
veri üyesini CWinThread
döndürür.
Kapsayıcı içinde etkin olan bir nesne yoksa veya uygulamanız bir OLE sunucusu değilse, bu işlev iş parçacığı nesnenizin veri üyesini döndürür m_pMainWnd
.
Açıklamalar
Kullanıcı arabirimi iş parçacıkları için bu, uygulama nesnenizin üyesine m_pActiveWnd
doğrudan başvurmaya eşdeğerdir.
Uygulamanız bir OLE sunucusu değilse, bu işlevi çağırmak doğrudan uygulama nesnenizin üyesine m_pMainWnd
başvurmaya eşdeğerdir.
Varsayılan davranışı değiştirmek için bu işlevi geçersiz kılın.
CWinThread::GetThreadPriority
Bu iş parçacığının geçerli iş parçacığı öncelik düzeyini alır.
int GetThreadPriority();
Dönüş Değeri
Geçerli iş parçacığı öncelik düzeyi, öncelik sınıfı içinde. Döndürülen değer, en yüksek önceliğe ve en düşük önceliğe kadar listelenen aşağıdakilerden biri olacaktır:
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_HIGHEST
THREAD_PRIORITY_ABOVE_NORMAL
THREAD_PRIORITY_NORMAL
THREAD_PRIORITY_BELOW_NORMAL
THREAD_PRIORITY_LOWEST
THREAD_PRIORITY_IDLE
Bu önceliklerle ilgili daha fazla bilgi için bkz SetThreadPriority
. Windows SDK'sı.
CWinThread::InitInstance
InitInstance
kullanıcı arabirimi iş parçacığının her yeni örneğini başlatmak için geçersiz kılınmalıdır.
virtual BOOL InitInstance();
Dönüş Değeri
Başlatma başarılı olursa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Genellikle, bir iş parçacığı ilk oluşturulduğunda tamamlanması gereken görevleri gerçekleştirmek için geçersiz kılarsınız InitInstance
.
Bu üye işlevi yalnızca kullanıcı arabirimi iş parçacıklarında kullanılır. öğesine geçirilen denetim işlevinde çalışan iş parçacıklarının başlatılmasını AfxBeginThread
gerçekleştirin.
CWinThread::IsIdleMessage
Belirli iletiler oluşturulduktan sonra çağrılmaması OnIdle
için bu işlevi geçersiz kılın.
virtual BOOL IsIdleMessage(MSG* pMsg);
Parametreler
pMsg
İşlenmekte olan geçerli iletiyi gösterir.
Dönüş Değeri
İleti işlendikten sonra çağrılırsa OnIdle
sıfır olmayan; aksi takdirde 0.
Açıklamalar
Varsayılan uygulama, yedekli fare iletileri ve yanıp sönen girişler tarafından oluşturulan iletiler sonrasında çağrı OnIdle
yapmaz.
Bir uygulama kısa bir süreölçer oluşturduysa, OnIdle
sık sık çağrılır ve performans sorunlarına neden olur. Böyle bir uygulamanın performansını geliştirmek için WM_TIMER
uygulamanın türetilmiş sınıfını CWinApp
geçersiz kılarak IsIdleMessage
iletileri aşağıdaki gibi denetleyin:
BOOL CMyWinApp::IsIdleMessage(MSG* pMsg)
{
if (!CWinApp::IsIdleMessage(pMsg) || pMsg->message == WM_TIMER)
return FALSE;
else
return TRUE;
}
Bu şekilde işleme WM_TIMER
, kısa süreölçer kullanan uygulamaların performansını geliştirecektir.
CWinThread::m_bAutoDelete
nesnenin iş parçacığı sonlandırma sırasında CWinThread
otomatik olarak silinip silinmeyeceğini belirtir.
BOOL m_bAutoDelete;
Açıklamalar
Veri m_bAutoDelete
üyesi, BOOL türünde bir genel değişkendir.
değeri m_bAutoDelete
, temel alınan iş parçacığı tutamacının nasıl kapatılırını etkilemez, ancak tanıtıcının kapatılmasının zamanlamasını etkiler. nesne yok edildiğinde CWinThread
iş parçacığı tutamacı her zaman kapatılır.
CWinThread::m_hThread
Bu CWinThread
öğesine bağlı iş parçacığının tutamacı.
HANDLE m_hThread;
Açıklamalar
Veri m_hThread
üyesi türünde HANDLE
bir ortak değişkendir. Yalnızca temel alınan çekirdek iş parçacığı nesnesi mevcutsa ve tanıtıcı henüz kapatılmamışsa geçerlidir.
Yıkıcı CWinThread
üzerinde çağrısında CloseHandle
bulunur m_hThread
. TRUE
İş m_bAutoDelete
parçacığı sonlandırıldığında nesne CWinThread
yok edilir ve bu da nesnenin CWinThread
ve üye değişkenlerinin işaretçilerini geçersiz kılır. Üyenin m_hThread
iş parçacığı çıkış değerini denetlemesi veya bir sinyal beklemesi gerekebilir. nesneyi ve üyesini m_hThread
iş parçacığı yürütme sırasında ve sonlandırıldıktan sonra tutmak CWinThread
için, iş parçacığı yürütmenin devam etmesi için FALSE
izin vermeden önce olarak ayarlayınm_bAutoDelete
. Aksi takdirde, iş parçacığı sonlandırabilir, nesneyi yok CWinThread
edebilir ve kullanmaya çalışmadan önce tanıtıcıyı kapatabilir. Bu tekniği kullanırsanız, nesnenin silinmesi sizin sorumluluğundadır CWinThread
.
CWinThread::m_nThreadID
Bu CWinThread
öğesine eklenen iş parçacığının kimliği.
DWORD m_nThreadID;
Açıklamalar
Veri m_nThreadID
üyesi türünde DWORD
bir ortak değişkendir. Yalnızca temel alınan çekirdek iş parçacığı nesnesi mevcutsa geçerlidir.
Ayrıca yaşam süresiyle ilgili m_hThread
açıklamalara da bakın.
Örnek
örneğine AfxGetThread
bakın.
CWinThread::m_pActiveWnd
İş parçacığınızın etkin pencere nesnesine bir işaretçi depolamak için bu veri üyesini kullanın.
CWnd* m_pActiveWnd;
Açıklamalar
Microsoft Foundation Sınıf Kitaplığı, tarafından başvurulan m_pActiveWnd
pencere kapatıldığında iş parçacığınızı otomatik olarak sonlandıracaktır. Bu iş parçacığı bir uygulamanın birincil iş parçacığıysa, uygulama da sonlandırılır. Bu veri üyesi ise NULL
, uygulamanın CWinApp
nesnesinin etkin penceresi devralınır. m_pActiveWnd
türünde CWnd*
bir ortak değişkendir.
Genellikle, geçersiz kıldığınızda InitInstance
bu üye değişkenini ayarlarsınız. Bir çalışan iş parçacığında, bu veri üyesinin değeri üst iş parçacığından devralınır.
CWinThread::m_pMainWnd
İş parçacığınızın ana pencere nesnesine bir işaretçi depolamak için bu veri üyesini kullanın.
CWnd* m_pMainWnd;
Açıklamalar
Microsoft Foundation Sınıf Kitaplığı, tarafından başvurulan m_pMainWnd
pencere kapatıldığında iş parçacığınızı otomatik olarak sonlandıracaktır. Bu iş parçacığı bir uygulamanın birincil iş parçacığıysa, uygulama da sonlandırılır. Bu veri üyesi ise NULL
, iş parçacığının ne zaman sonlandırılacağını belirlemek için uygulamanın CWinApp
nesnesinin ana penceresi kullanılır. m_pMainWnd
türünde CWnd*
bir ortak değişkendir.
Genellikle, geçersiz kıldığınızda InitInstance
bu üye değişkenini ayarlarsınız. Bir çalışan iş parçacığında, bu veri üyesinin değeri üst iş parçacığından devralınır.
CWinThread::OnIdle
Boşta kalma süresi işleme gerçekleştirmek için bu üye işlevini geçersiz kılın.
virtual BOOL OnIdle(LONG lCount);
Parametreler
lCount
İş parçacığının ileti kuyruğu boş olduğunda her seferinde OnIdle
artırılan bir sayaç çağrılır. Bu sayı, her yeni ileti işlendiğinde 0 olarak sıfırlanır. bir ileti işlemeden iş parçacığının boşta olduğu göreli süreyi belirlemek için parametresini kullanabilirsiniz lCount
.
Dönüş Değeri
Daha fazla boşta işlem süresi almak için sıfır olmayan; Artık boşta işlem süresi gerekmiyorsa 0.
Açıklamalar
OnIdle
, iş parçacığının ileti kuyruğu boş olduğunda varsayılan ileti döngüsünde çağrılır. Kendi arka plan boşta işleyici görevlerinizi çağırmak için geçersiz kılmanızı kullanın.
OnIdle
ek boşta işlem süresi gerekmediğini belirtmek için 0 döndürmelidir. İleti lCount
kuyruğu boş olduğunda her OnIdle
çağrılırken parametresi artırılır ve her yeni ileti işlendiğinde 0'a sıfırlanır. Bu sayıya göre farklı boşta yordamlarınızı çağırabilirsiniz.
Bu üye işlevinin varsayılan uygulaması geçici nesneleri ve kullanılmayan dinamik bağlantı kitaplıklarını bellekten serbest bırakır.
Bu üye işlevi yalnızca kullanıcı arabirimi iş parçacıklarında kullanılır.
Uygulama döndürülene kadar OnIdle
iletileri işleyemediğinden, bu işlevde uzun görevler gerçekleştirmeyin.
CWinThread::operator HANDLE
Nesnenin tutamacını CWinThread
alır.
operator HANDLE() const;
Dönüş Değeri
Başarılı olursa, iş parçacığı nesnesinin tanıtıcısı; aksi takdirde , NULL
.
Açıklamalar
Windows API'lerini doğrudan çağırmak için tutamacı kullanın.
CWinThread::PostThreadMessage
Kullanıcı tanımlı bir iletiyi başka CWinThread
bir nesneye göndermek için çağrılır.
BOOL PostThreadMessage(
UINT message,
WPARAM wParam,
LPARAM lParam);
Parametreler
message
Kullanıcı tanımlı iletinin kimliği.
wParam
İlk ileti parametresi.
lParam
İkinci ileti parametresi.
Dönüş Değeri
Başarılı olursa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Gönderilen ileti, ileti eşleme makrosunun ON_THREAD_MESSAGE
uygun ileti işleyicisine eşlenir.
Not
çağrısı PostThreadMessage
yaptığınızda, ileti iş parçacığının ileti kuyruğuna yerleştirilir. Ancak, bu şekilde gönderilen iletiler bir pencereyle ilişkilendirilmediğinden, MFC bunları iletiye veya komut işleyicilerine göndermez. Bu iletileri işlemek için türetilmiş sınıfınızın CWinApp
işlevini geçersiz kılın PreTranslateMessage()
ve iletileri el ile işleyebilir.
CWinThread::PreTranslateMessage
Pencere iletilerini Windows işlevlerine TranslateMessage
ve DispatchMessage
göndermeden önce filtrelemek için bu işlevi geçersiz kılın.
virtual BOOL PreTranslateMessage(MSG* pMsg);
Parametreler
pMsg
İşlenmesi gereken iletiyi içeren bir MSG
yapıya işaret ediyor.
Dönüş Değeri
İleti içinde tam olarak işlendiyse PreTranslateMessage
ve daha fazla işlenmemesi gerekiyorsa sıfır olmayan. İletinin normal şekilde işlenmesi gerekiyorsa sıfır.
Açıklamalar
Bu üye işlevi yalnızca kullanıcı arabirimi iş parçacıklarında kullanılır.
CWinThread::ProcessMessageFilter
Çerçevenin kanca işlevi, belirli Windows iletilerini filtrelemek ve yanıtlamak için bu üye işlevini çağırır.
virtual BOOL ProcessMessageFilter(
int code,
LPMSG lpMsg);
Parametreler
code
Bir kanca kodu belirtir. Bu üye işlevi, nasıl işleneceğini lpMsg
belirlemek için kodunu kullanır.
lpMsg
Windows MSG
yapısının işaretçisi.
Dönüş Değeri
İleti işlenirse sıfır olmayan; aksi takdirde 0.
Açıklamalar
Kanca işlevi, olayları uygulamanın normal ileti işlemesine gönderilmeden önce işler.
Bu gelişmiş özelliği geçersiz kılarsanız, çerçevenin kanca işlemesini korumak için temel sınıf sürümünü çağırdığınızdan emin olun.
CWinThread::ProcessWndProcException
İşleyici, iş parçacığınızın ileti veya komut işleyicilerinden birinde oluşan bir özel durumu yakalamadığı her durumda çerçeve bu üye işlevini çağırır.
virtual LRESULT ProcessWndProcException(
CException* e,
const MSG* pMsg);
Parametreler
e
İşlenmeyen bir özel duruma işaret etti.
pMsg
Çerçevenin özel MSG
durum oluşturmasına neden olan Windows iletisi hakkında bilgi içeren bir yapıya işaret eder.
Dönüş Değeri
Bir WM_CREATE
özel durum oluşturulursa -1; aksi takdirde 0.
Açıklamalar
Bu üye işlevini doğrudan çağırmayın.
Bu üye işlevinin varsayılan uygulaması yalnızca aşağıdaki iletilerden oluşturulan özel durumları işler:
Command | Eylem |
---|---|
WM_CREATE |
Başarısız. |
WM_PAINT |
Etkilenen pencereyi doğrulayarak başka bir WM_PAINT iletinin oluşturulmasını önleyin. |
Özel durumlarınızın genel olarak işlenmesini sağlamak için bu üye işlevini geçersiz kılın. Yalnızca varsayılan davranışı görüntülemek istiyorsanız temel işlevselliği çağırın.
Bu üye işlevi yalnızca ileti pompası olan iş parçacıklarında kullanılır.
CWinThread::PumpMessage
İş parçacığının ileti döngüsünü içerir.
virtual BOOL PumpMessage();
Açıklamalar
PumpMessage
iş parçacığının ileti döngüsünü içerir. PumpMessage
, tarafından CWinThread
iş parçacığının iletilerini pompalayarak çağrılır. İletilerin işlenmesini zorlamak için doğrudan arayabilir PumpMessage
veya varsayılan davranışını değiştirmek için geçersiz kılabilirsiniz PumpMessage
.
Yalnızca ileri düzey kullanıcılar için doğrudan çağrılması PumpMessage
ve varsayılan davranışının geçersiz kılınılması önerilir.
CWinThread::ResumeThread
Üye işlevi tarafından askıya alınan bir iş parçacığının veya bayrağıyla oluşturulan bir iş parçacığının SuspendThread
yürütülmesini sürdürmek için çağrılır CREATE_SUSPENDED
.
DWORD ResumeThread();
Dönüş Değeri
Başarılı olursa iş parçacığının önceki askıya alma sayısı; 0xFFFFFFFF
yoksa. Dönüş değeri sıfırsa, geçerli iş parçacığı askıya alınmamıştır. Dönüş değeri bir ise, iş parçacığı askıya alınmıştır, ancak şimdi yeniden başlatılır. Birden büyük herhangi bir dönüş değeri, iş parçacığının askıya alınmış olarak kaldığı anlamına gelir.
Açıklamalar
Geçerli iş parçacığının askıya alma sayısı bir azaltılır. Askıya alma sayısı sıfıra düşürülürse, iş parçacığı yürütmeye devam eder; aksi takdirde iş parçacığı askıya alınır.
CWinThread::Run
Kullanıcı arabirimi iş parçacıkları için varsayılan bir ileti döngüsü sağlar.
virtual int Run();
Dönüş Değeri
İş int
parçacığı tarafından döndürülen bir değer. Bu değer çağrılarak GetExitCodeThread
alınabilir.
Açıklamalar
Run
uygulama bir WM_QUIT
ileti alana kadar Windows iletilerini alır ve dağıtıyor. İş parçacığının ileti kuyruğu şu anda ileti içermiyorsa, Run
boşta kalma süresi işleme gerçekleştirmek için çağrı yapar OnIdle
. Gelen iletiler özel işlem için üye işlevine PreTranslateMessage
ve ardından standart klavye çevirisi için Windows işlevine TranslateMessage
gider. Son olarak, DispatchMessage
Windows işlevi çağrılır.
Run
nadiren geçersiz kılınabilir, ancak özel davranış uygulamak için geçersiz kılabilirsiniz.
Bu üye işlevi yalnızca kullanıcı arabirimi iş parçacıklarında kullanılır.
CWinThread::SetThreadPriority
Bu işlev, geçerli iş parçacığının öncelik düzeyini kendi öncelik sınıfı içinde ayarlar.
BOOL SetThreadPriority(int nPriority);
Parametreler
nPriority
Yeni iş parçacığı öncelik düzeyini kendi öncelik sınıfı içinde belirtir. Bu parametre, en yüksek öncelikten en düşüke kadar listelenen aşağıdaki değerlerden biri olmalıdır:
THREAD_PRIORITY_TIME_CRITICAL
THREAD_PRIORITY_HIGHEST
THREAD_PRIORITY_ABOVE_NORMAL
THREAD_PRIORITY_NORMAL
THREAD_PRIORITY_BELOW_NORMAL
THREAD_PRIORITY_LOWEST
THREAD_PRIORITY_IDLE
Bu önceliklerle ilgili daha fazla bilgi için bkz SetThreadPriority
. Windows SDK'sı.
Dönüş Değeri
İşlev başarılıysa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Yalnızca başarıyla döndürdüğünde CreateThread
çağrılabilir.
CWinThread::SuspendThread
Geçerli iş parçacığının askıya alma sayısını artırır.
DWORD SuspendThread();
Dönüş Değeri
Başarılı olursa iş parçacığının önceki askıya alma sayısı; 0xFFFFFFFF
yoksa.
Açıklamalar
Herhangi bir iş parçacığının askıya alma sayısı sıfırın üzerindeyse, bu iş parçacığı yürütülmüyor. İş parçacığı, üye işlevi çağrılarak ResumeThread
sürdürülebilir.
Ayrıca bkz.
CCmdTarget
Sınıf
Hiyerarşi Grafiği
CWinApp
Sınıf
CCmdTarget
Sınıf