Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 CWinApptüretilen bir nesne tarafından sağlanır ve CWinApp öğesinden CWinThreadtü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 CWinThreadtü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 CWinThreadiş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 AfxBeginThreadyerine - türetilmiş bir CWinThreadnesnesi 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 CWinThreaddaha 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_SUSPENDEDbir askıya alma sayısı ile iş parçacığını başlatın. İş parçacığı çalışmaya başlamadan önce nesneninCWinThreadveya türetilmiş sınıfınızın herhangi bir üyesi gibim_bAutoDeleteherhangi 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::ResumeThreadkullanın. İş parçacığı çağrılana kadarCWinThread::ResumeThreadyü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 AfxBeginThreadoluş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 GetExitCodeThreadalı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 TRUEnesnesini 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_CRITICALTHREAD_PRIORITY_HIGHESTTHREAD_PRIORITY_ABOVE_NORMALTHREAD_PRIORITY_NORMALTHREAD_PRIORITY_BELOW_NORMALTHREAD_PRIORITY_LOWESTTHREAD_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ı AfxBeginThreadgerç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ı CWinAppgeç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 HANDLEbir 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 DWORDbir 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 AfxGetThreadbakı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 InitInstancebu ü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 InitInstancebu ü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_MESSAGEuygun ileti işleyicisine eşlenir.
Not
çağrısı PostThreadMessageyaptığı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 CWinAppişlevini geçersiz kılın PreTranslateMessage() ve iletileri el ile işleyebilir.
CWinThread::PreTranslateMessage
Pencere iletilerini Windows işlevlerine TranslateMessage ve DispatchMessagegö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 lpMsgbelirlemek 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 GetExitCodeThreadalı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_CRITICALTHREAD_PRIORITY_HIGHESTTHREAD_PRIORITY_ABOVE_NORMALTHREAD_PRIORITY_NORMALTHREAD_PRIORITY_BELOW_NORMALTHREAD_PRIORITY_LOWESTTHREAD_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