Udostępnij za pośrednictwem


CWinThread Klasa

Reprezentuje wątek wykonywania w aplikacji.

Składnia

class CWinThread : public CCmdTarget

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CWinThread::CWinThread CWinThread Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CWinThread::CreateThread Rozpoczyna wykonywanie CWinThread obiektu.
CWinThread::ExitInstance Zastąpić, aby wyczyścić, gdy wątek zakończy się.
CWinThread::GetMainWnd Pobiera wskaźnik do głównego okna wątku.
CWinThread::GetThreadPriority Pobiera priorytet bieżącego wątku.
CWinThread::InitInstance Zastąpić, aby wykonać inicjowanie wystąpienia wątku.
CWinThread::IsIdleMessage Sprawdza, czy są wyświetlane specjalne wiadomości.
CWinThread::OnIdle Zastąpić, aby wykonać przetwarzanie bezczynności specyficzne dla wątku.
CWinThread::PostThreadMessage Publikuje komunikat do innego CWinThread obiektu.
CWinThread::PreTranslateMessage Filtruje komunikaty przed ich wysłaniem do funkcji TranslateMessage systemu Windows i DispatchMessage.
CWinThread::ProcessMessageFilter Przechwytuje niektóre komunikaty przed dotarciem do aplikacji.
CWinThread::ProcessWndProcException Przechwytuje wszystkie nieobsługiwane wyjątki zgłaszane przez programy obsługi komunikatów i poleceń wątku.
CWinThread::PumpMessage Zawiera pętlę komunikatu wątku.
CWinThread::ResumeThread Dekrementuje liczbę wstrzymywanie wątku.
CWinThread::Run Sterowanie funkcją wątków za pomocą pompy komunikatów. Zastąpij, aby dostosować domyślną pętlę komunikatów.
CWinThread::SetThreadPriority Ustawia priorytet bieżącego wątku.
CWinThread::SuspendThread Zwiększa liczbę wstrzymywanie wątku.

Operatory publiczne

Nazwa/nazwisko opis
CWinThread::operator HANDLE Pobiera uchwyt CWinThread obiektu.

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
CWinThread::m_bAutoDelete Określa, czy należy zniszczyć obiekt po zakończeniu wątku.
CWinThread::m_hThread Dojście do bieżącego wątku.
CWinThread::m_nThreadID Identyfikator bieżącego wątku.
CWinThread::m_pActiveWnd Wskaźnik do głównego okna aplikacji kontenera, gdy serwer OLE jest aktywny.
CWinThread::m_pMainWnd Przechowuje wskaźnik do głównego okna aplikacji.

Uwagi

Główny wątek wykonywania jest zwykle dostarczany przez obiekt pochodzący z CWinApp; CWinApp pochodzi z CWinThread. Dodatkowe CWinThread obiekty zezwalają na wiele wątków w danej aplikacji.

Istnieją dwa ogólne typy wątków, które CWinThread obsługują: wątki robocze i wątki interfejsu użytkownika. Wątki robocze nie mają pompy komunikatów: na przykład wątek wykonujący obliczenia w tle w aplikacji arkusza kalkulacyjnego. Wątki interfejsu użytkownika mają pompę komunikatów i przetwarzają komunikaty odebrane z systemu. CWinApp klasy i pochodzące z nich są przykładami wątków interfejsu użytkownika. Inne wątki interfejsu użytkownika mogą również pochodzić bezpośrednio z CWinThreadelementu .

Obiekty klasy CWinThread zwykle istnieją przez czas trwania wątku. Jeśli chcesz zmodyfikować to zachowanie, ustaw wartość m_bAutoDelete FALSE.

Klasa jest niezbędna CWinThread , aby kod i MFC były w pełni bezpieczne wątkowo. Dane lokalne wątku używane przez platformę do obsługi informacji specyficznych dla wątków są zarządzane przez CWinThread obiekty. Ze względu na tę zależność od CWinThread obsługi danych lokalnych wątków każdy wątek korzystający z MFC musi zostać utworzony przez MFC. Na przykład wątek utworzony przez funkcję _beginthread_beginthreadex czasu wykonywania nie może używać żadnych interfejsów API MFC.

Aby utworzyć wątek, wywołaj metodę AfxBeginThread. Istnieją dwie formy, w zależności od tego, czy potrzebujesz wątku procesu roboczego, czy interfejsu użytkownika. Jeśli chcesz, aby wątek interfejsu użytkownika został przekazany do AfxBeginThread wskaźnika do CRuntimeClass klasy pochodnej CWinThread. Jeśli chcesz utworzyć wątek procesu roboczego, przekaż wskaźnik do AfxBeginThread funkcji sterującej i parametr do funkcji sterującej. W przypadku wątków roboczych i wątków interfejsu użytkownika można określić opcjonalne parametry, które modyfikują priorytet, rozmiar stosu, flagi tworzenia i atrybuty zabezpieczeń. AfxBeginThread Funkcja zwróci wskaźnik do nowego CWinThread obiektu.

Zamiast wywoływać AfxBeginThreadmetodę , można skonstruować obiekt pochodny, a następnie wywołać metodę CWinThreadCreateThread. Ta dwuetapowa metoda konstruowania jest przydatna, jeśli chcesz ponownie użyć CWinThread obiektu między kolejnymi operacjami tworzenia i kończenia wykonywania wątków.

Aby uzyskać więcej informacji na temat CWinThreadprogramu , zobacz artykuły Multithreading with C++ and MFC, Multithreading: Creating User-Interface Threads, Multithreading: Creating Worker Threads, and Multithreading: How to use the Synchronization Classes (Tworzenie wątków wielowątków: tworzenie wątków procesów roboczych i wielowątkowanie: jak używać klas synchronizacji).

Hierarchia dziedziczenia

CObject

CCmdTarget

CWinThread

Wymagania

Nagłówek: afxwin.h

CWinThread::CreateThread

Tworzy wątek do wykonania w przestrzeni adresowej procesu wywołującego.

BOOL CreateThread(
    DWORD dwCreateFlags = 0,
    UINT nStackSize = 0,
    LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);

Parametry

dwCreateFlags
Określa dodatkową flagę, która kontroluje tworzenie wątku. Ta flaga może zawierać jedną z dwóch wartości:

  • CREATE_SUSPENDED Rozpocznij wątek z liczbą wstrzymania jednego. Użyj CREATE_SUSPENDED polecenia , jeśli chcesz zainicjować dowolne dane CWinThread składowe obiektu, takie jak m_bAutoDelete lub jakiekolwiek elementy członkowskie klasy pochodnej, przed uruchomieniem wątku. Po zakończeniu inicjowania użyj polecenia , CWinThread::ResumeThread aby uruchomić wątek. Wątek nie zostanie wykonany, dopóki CWinThread::ResumeThread nie zostanie wywołany.

  • 0 Uruchom wątek natychmiast po utworzeniu.

nStackSize
Określa rozmiar w bajtach stosu dla nowego wątku. Jeśli wartość 0, rozmiar stosu jest domyślnie taki sam jak rozmiar podstawowego wątku procesu.

lpSecurityAttrs
Wskazuje strukturę określającą SECURITY_ATTRIBUTES atrybuty zabezpieczeń wątku.

Wartość zwracana

Nonzero, jeśli wątku został utworzony pomyślnie; w przeciwnym razie 0.

Uwagi

Użyj AfxBeginThread polecenia , aby utworzyć obiekt wątku i wykonać go w jednym kroku. Użyj polecenia CreateThread , jeśli chcesz ponownie użyć obiektu wątku między kolejnym tworzeniem i kończeniem wykonywania wątków.

CWinThread::CWinThread

CWinThread Tworzy obiekt.

CWinThread();

Uwagi

Aby rozpocząć wykonywanie wątku, wywołaj funkcję składową CreateThread . Zazwyczaj tworzy się wątki przez wywołanie AfxBeginThreadmetody , co spowoduje wywołanie tego konstruktora i CreateThread.

CWinThread::ExitInstance

Wywoływana przez platformę z rzadko zastępowanej Run funkcji składowej w celu zakończenia tego wystąpienia wątku lub w przypadku niepowodzenia wywołania InitInstance .

virtual int ExitInstance();

Wartość zwracana

Kod zakończenia wątku; Wartość 0 nie wskazuje błędów, a wartości większe niż 0 wskazują błąd. Tę wartość można pobrać przez wywołanie metody GetExitCodeThread.

Uwagi

Nie należy wywoływać tej funkcji składowej z dowolnego miejsca, ale w ramach funkcji składowej Run . Ta funkcja składowa jest używana tylko w wątkach interfejsu użytkownika.

Domyślna implementacja tej funkcji usuwa obiekt , CWinThread jeśli m_bAutoDelete ma wartość TRUE. Zastąpi tę funkcję, jeśli chcesz wykonać dodatkowe czyszczenie po zakończeniu wątku. Implementacja ExitInstance polecenia powinna wywołać wersję klasy bazowej po wykonaniu kodu.

CWinThread::GetMainWnd

Jeśli aplikacja jest serwerem OLE, wywołaj tę funkcję, aby pobrać wskaźnik do aktywnego okna głównego aplikacji zamiast bezpośrednio odwoływać się do m_pMainWnd elementu członkowskiego obiektu aplikacji.

virtual CWnd* GetMainWnd();

Wartość zwracana

Ta funkcja zwraca wskaźnik do jednego z dwóch typów okien. Jeśli wątek jest częścią serwera OLE i ma obiekt, który jest aktywny w aktywnym kontenerze, ta funkcja zwraca CWinApp::m_pActiveWnd element członkowski CWinThread danych obiektu.

Jeśli w kontenerze nie ma aktywnego obiektu lub aplikacja nie jest serwerem OLE, ta funkcja zwraca m_pMainWnd element członkowski danych obiektu wątku.

Uwagi

W przypadku wątków interfejsu użytkownika jest to równoważne bezpośrednio odwołującemu się do m_pActiveWnd elementu członkowskiego obiektu aplikacji.

Jeśli aplikacja nie jest serwerem OLE, wywołanie tej funkcji jest równoważne bezpośrednio odwołującemu się do m_pMainWnd elementu członkowskiego obiektu aplikacji.

Zastąpi tę funkcję, aby zmodyfikować zachowanie domyślne.

CWinThread::GetThreadPriority

Pobiera bieżący poziom priorytetu wątku tego wątku.

int GetThreadPriority();

Wartość zwracana

Poziom priorytetu bieżącego wątku w klasie priorytetu. Zwrócona wartość będzie jedną z następujących wartości wymienionych z najwyższego priorytetu do najniższego:

  • THREAD_PRIORITY_TIME_CRITICAL

  • THREAD_PRIORITY_HIGHEST

  • THREAD_PRIORITY_ABOVE_NORMAL

  • THREAD_PRIORITY_NORMAL

  • THREAD_PRIORITY_BELOW_NORMAL

  • THREAD_PRIORITY_LOWEST

  • THREAD_PRIORITY_IDLE

Aby uzyskać więcej informacji na temat tych priorytetów, zobacz SetThreadPriority w zestawie Windows SDK.

CWinThread::InitInstance

InitInstance należy zastąpić, aby zainicjować każde nowe wystąpienie wątku interfejsu użytkownika.

virtual BOOL InitInstance();

Wartość zwracana

Inicjalizacja niezerowa, jeśli inicjowanie zakończyło się pomyślnie; w przeciwnym razie 0.

Uwagi

Zazwyczaj przesłonięć InitInstance zadania, które należy wykonać po utworzeniu wątku.

Ta funkcja składowa jest używana tylko w wątkach interfejsu użytkownika. Wykonaj inicjowanie wątków procesów roboczych w funkcji sterującej przekazanej do AfxBeginThread.

CWinThread::IsIdleMessage

Zastąpi tę funkcję, aby nie OnIdle być wywoływana po wygenerowaniu określonych komunikatów.

virtual BOOL IsIdleMessage(MSG* pMsg);

Parametry

pMsg
Wskazuje na przetwarzany bieżący komunikat.

Wartość zwracana

Niezerowa, jeśli OnIdle powinna być wywoływana po przetworzeniu komunikatu; w przeciwnym razie 0.

Uwagi

Domyślna implementacja nie wywołuje OnIdle nadmiarowych komunikatów myszy i komunikatów generowanych przez daszki.

Jeśli aplikacja utworzyła krótki czasomierz, OnIdle będzie wywoływana często, powodując problemy z wydajnością. Aby poprawić wydajność aplikacji, przesłoń IsIdleMessage klasę pochodną aplikacji CWinApp, aby sprawdzić WM_TIMER komunikaty w następujący sposób:

BOOL CMyWinApp::IsIdleMessage(MSG* pMsg)
{
   if (!CWinApp::IsIdleMessage(pMsg) || pMsg->message == WM_TIMER)
      return FALSE;
   else
      return TRUE;
}

Obsługa WM_TIMER w ten sposób poprawi wydajność aplikacji korzystających z krótkich czasomierzy.

CWinThread::m_bAutoDelete

Określa, czy CWinThread obiekt powinien zostać automatycznie usunięty po zakończeniu wątku.

BOOL m_bAutoDelete;

Uwagi

Element m_bAutoDelete członkowski danych jest publiczną zmienną typu BOOL.

Wartość m_bAutoDelete nie ma wpływu na sposób zamknięcia bazowego uchwytu wątku, ale ma wpływ na czas zamknięcia uchwytu. Uchwyt wątku CWinThread jest zawsze zamykany, gdy obiekt zostanie zniszczony.

CWinThread::m_hThread

Dojście do wątku dołączonego do tego CWinThreadelementu .

HANDLE m_hThread;

Uwagi

Element m_hThread członkowski danych jest publiczną zmienną typu HANDLE. Jest to prawidłowe tylko wtedy, gdy obiekt podstawowego wątku jądra obecnie istnieje, a dojście nie zostało jeszcze zamknięte.

Destruktor CWinThread wywołuje metodę CloseHandle .m_hThread TRUE Jeśli m_bAutoDelete wątek kończy działanie, CWinThread obiekt zostanie zniszczony, co spowoduje unieważnienie wszystkich wskaźników do CWinThread obiektu i jego zmiennych składowych. Może być konieczne sprawdzenie m_hThread wartości zakończenia wątku lub oczekiwanie na sygnał. Aby zachować CWinThread obiekt i jego m_hThread element członkowski podczas wykonywania wątku i po jego zakończeniu, ustaw wartość m_bAutoDelete na FALSE przed zezwoleniem na kontynuowanie wykonywania wątku. W przeciwnym razie wątek może zakończyć się, zniszczyć CWinThread obiekt i zamknąć uchwyt, zanim spróbujesz go użyć. Jeśli używasz tej techniki, ponosisz odpowiedzialność za usunięcie CWinThread obiektu.

CWinThread::m_nThreadID

Identyfikator wątku dołączonego do tego CWinThreadelementu .

DWORD m_nThreadID;

Uwagi

Element m_nThreadID członkowski danych jest publiczną zmienną typu DWORD. Jest to prawidłowe tylko wtedy, gdy obiekt podstawowego wątku jądra obecnie istnieje. Zobacz również uwagi na temat m_hThread życia.

Przykład

Zobacz przykład dla elementu AfxGetThread.

CWinThread::m_pActiveWnd

Ten element członkowski danych służy do przechowywania wskaźnika do aktywnego obiektu okna wątku.

CWnd* m_pActiveWnd;

Uwagi

Biblioteka klas programu Microsoft Foundation automatycznie zakończy wątek po zamknięciu okna, do których m_pActiveWnd się odwołuje. Jeśli ten wątek jest wątkiem podstawowym dla aplikacji, aplikacja zostanie również zakończona. Jeśli ten element członkowski danych to NULL, aktywne okno dla obiektu aplikacji CWinApp zostanie odziedziczone. m_pActiveWnd jest publiczną zmienną typu CWnd*.

Zazwyczaj ta zmienna składowa jest ustawiana podczas zastępowania InitInstanceelementu . W wątku roboczym wartość tego elementu członkowskiego danych jest dziedziczona z wątku nadrzędnego.

CWinThread::m_pMainWnd

Ten element członkowski danych służy do przechowywania wskaźnika do głównego obiektu okna wątku.

CWnd* m_pMainWnd;

Uwagi

Biblioteka klas programu Microsoft Foundation automatycznie zakończy wątek po zamknięciu okna, do których m_pMainWnd się odwołuje. Jeśli ten wątek jest wątkiem podstawowym dla aplikacji, aplikacja zostanie również zakończona. Jeśli ten element członkowski danych to NULL, główne okno obiektu aplikacji CWinApp będzie używane do określenia, kiedy zakończyć wątek. m_pMainWnd jest publiczną zmienną typu CWnd*.

Zazwyczaj ta zmienna składowa jest ustawiana podczas zastępowania InitInstanceelementu . W wątku roboczym wartość tego elementu członkowskiego danych jest dziedziczona z wątku nadrzędnego.

CWinThread::OnIdle

Zastąpij tę funkcję składową, aby wykonywać przetwarzanie w czasie bezczynności.

virtual BOOL OnIdle(LONG lCount);

Parametry

lCount
Licznik zwiększa się za każdym razem OnIdle , gdy kolejka komunikatów wątku jest pusta. Ta liczba jest resetowany do 0 za każdym razem, gdy jest przetwarzany nowy komunikat. Możesz użyć parametru lCount , aby określić względny czas bezczynności wątku bez przetwarzania komunikatu.

Wartość zwracana

Bezzerowe odbieranie większego czasu przetwarzania bezczynności; 0, jeśli nie jest potrzebny czas przetwarzania bezczynności.

Uwagi

OnIdle jest wywoływana w domyślnej pętli komunikatów, gdy kolejka komunikatów wątku jest pusta. Użyj przesłonięcia, aby wywołać własne zadania obsługi bezczynności w tle.

OnIdle Powinna zwrócić wartość 0, aby wskazać, że nie jest wymagany dodatkowy czas przetwarzania bezczynności. Parametr lCount jest zwiększany za każdym razem OnIdle , gdy kolejka komunikatów jest pusta i jest resetowana do 0 przy każdym przetwarzaniu nowego komunikatu. Możesz wywołać różne procedury bezczynności na podstawie tej liczby.

Domyślna implementacja tej funkcji składowej zwalnia obiekty tymczasowe i nieużywane biblioteki linków dynamicznych z pamięci.

Ta funkcja składowa jest używana tylko w wątkach interfejsu użytkownika.

Ponieważ aplikacja nie może przetwarzać komunikatów do momentu OnIdle powrotu, nie wykonuj długich zadań w tej funkcji.

CWinThread::operator HANDLE

Pobiera uchwyt CWinThread obiektu.

operator HANDLE() const;

Wartość zwracana

W przypadku powodzenia uchwyt obiektu wątku; w przeciwnym razie, NULL.

Uwagi

Użyj uchwytu, aby bezpośrednio wywoływać interfejsy API systemu Windows.

CWinThread::PostThreadMessage

Wywoływana w celu opublikowania komunikatu zdefiniowanego przez użytkownika do innego CWinThread obiektu.

BOOL PostThreadMessage(
    UINT message,
    WPARAM wParam,
    LPARAM lParam);

Parametry

message
Identyfikator komunikatu zdefiniowanego przez użytkownika.

wParam
Pierwszy parametr komunikatu.

lParam
Drugi parametr komunikatu.

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.

Uwagi

Wysłana wiadomość jest mapowana na właściwą procedurę obsługi komunikatów przez makro ON_THREAD_MESSAGEmapy komunikatów.

Uwaga

Po wywołaniu PostThreadMessagewywołania komunikat zostanie umieszczony w kolejce komunikatów wątku. Jednak ze względu na to, że komunikaty opublikowane w ten sposób nie są skojarzone z oknem, MFC nie będzie wysyłać ich do programów obsługi komunikatów ani poleceń. Aby obsłużyć te komunikaty, zastąp PreTranslateMessage() funkcję klasy -pochodnej CWinAppi ręcznie obsłuż komunikaty.

CWinThread::PreTranslateMessage

Zastąpij tę funkcję, aby filtrować komunikaty okien przed ich wysłaniem do funkcji TranslateMessage systemu Windows i DispatchMessage.

virtual BOOL PreTranslateMessage(MSG* pMsg);

Parametry

pMsg
Wskazuje strukturę zawierającą MSG komunikat do przetworzenia.

Wartość zwracana

Nonzero, jeśli komunikat został w pełni przetworzony i PreTranslateMessage nie powinien być przetwarzany dalej. Zero, jeśli komunikat powinien być przetwarzany w normalny sposób.

Uwagi

Ta funkcja składowa jest używana tylko w wątkach interfejsu użytkownika.

CWinThread::ProcessMessageFilter

Funkcja hook platformy wywołuje tę funkcję składową, aby filtrować i reagować na niektóre komunikaty systemu Windows.

virtual BOOL ProcessMessageFilter(
    int code,
    LPMSG lpMsg);

Parametry

code
Określa kod zaczepienia. Ta funkcja składowa używa kodu do określenia sposobu przetwarzania lpMsg.

lpMsg
Wskaźnik do struktury systemu WindowsMSG.

Wartość zwracana

Niezero, jeśli komunikat jest przetwarzany; w przeciwnym razie 0.

Uwagi

Funkcja zaczepienia przetwarza zdarzenia przed wysłaniem ich do normalnego przetwarzania komunikatów aplikacji.

Jeśli zastąpisz tę zaawansowaną funkcję, pamiętaj, aby wywołać wersję klasy bazowej w celu zachowania przetwarzania zaczepienia platformy.

CWinThread::ProcessWndProcException

Struktura wywołuje tę funkcję składową za każdym razem, gdy program obsługi nie przechwyci wyjątku zgłoszony w jednym z programów obsługi komunikatów ani poleceń wątku.

virtual LRESULT ProcessWndProcException(
    CException* e,
    const MSG* pMsg);

Parametry

e
Wskazuje na nieobsługiwany wyjątek.

pMsg
Wskazuje strukturę zawierającą MSG informacje o komunikacie systemu Windows, który spowodował zgłoszenie wyjątku przez strukturę .

Wartość zwracana

-1, jeśli WM_CREATE jest generowany wyjątek; w przeciwnym razie 0.

Uwagi

Nie należy bezpośrednio wywoływać tej funkcji składowej.

Domyślna implementacja tej funkcji składowej obsługuje tylko wyjątki wygenerowane na podstawie następujących komunikatów:

Polecenie Akcja
WM_CREATE Zawieść.
WM_PAINT Zweryfikuj okno, którego dotyczy problem, uniemożliwiając wygenerowanie innego WM_PAINT komunikatu.

Zastąpi tę funkcję składową, aby zapewnić globalną obsługę wyjątków. Wywołaj funkcję podstawową tylko wtedy, gdy chcesz wyświetlić domyślne zachowanie.

Ta funkcja składowa jest używana tylko w wątkach, które mają pompę komunikatów.

CWinThread::PumpMessage

Zawiera pętlę komunikatu wątku.

virtual BOOL PumpMessage();

Uwagi

PumpMessage zawiera pętlę komunikatu wątku. PumpMessage element jest wywoływany przez CWinThread element w celu pompowania komunikatów wątku. Możesz wywołać PumpMessage metodę bezpośrednio, aby wymusić przetwarzanie komunikatów lub zastąpić PumpMessage zmianę jego domyślnego zachowania.

Bezpośrednie wywoływanie PumpMessage i zastępowanie jego domyślnego zachowania jest zalecane tylko dla użytkowników zaawansowanych.

CWinThread::ResumeThread

Wywoływana w celu wznowienia wykonywania wątku zawieszonego przez SuspendThread funkcję składową lub wątku utworzonego z flagą CREATE_SUSPENDED .

DWORD ResumeThread();

Wartość zwracana

Poprzednia liczba wstrzymania wątku w przypadku powodzenia; 0xFFFFFFFF inaczej. Jeśli zwracana wartość to zero, bieżący wątek nie został zawieszony. Jeśli zwracana wartość to jedna, wątek został zawieszony, ale jest teraz ponownie uruchamiany. Każda wartość zwracana większa niż jedna oznacza, że wątek pozostaje zawieszony.

Uwagi

Liczba wstrzymania bieżącego wątku jest zmniejszana o jeden. Jeśli liczba wstrzymania zostanie zmniejszona do zera, wątek wznowi wykonywanie; w przeciwnym razie wątek pozostaje zawieszony.

CWinThread::Run

Udostępnia domyślną pętlę komunikatów dla wątków interfejsu użytkownika.

virtual int Run();

Wartość zwracana

int Wartość zwracana przez wątek. Tę wartość można pobrać przez wywołanie metody GetExitCodeThread.

Uwagi

Run pobiera i wysyła komunikaty systemu Windows do momentu odebrania komunikatu przez aplikację WM_QUIT . Jeśli kolejka komunikatów wątku nie zawiera obecnie żadnych komunikatów, Run wywołania OnIdle do wykonywania przetwarzania w czasie bezczynności. Komunikaty przychodzące przechodzą do funkcji składowej PreTranslateMessage w celu specjalnego przetwarzania, a następnie do funkcji TranslateMessage systemu Windows na potrzeby standardowego tłumaczenia klawiatury. Na koniec wywoływana DispatchMessage jest funkcja systemu Windows.

Run rzadko jest zastępowana, ale można ją zastąpić, aby zaimplementować specjalne zachowanie.

Ta funkcja składowa jest używana tylko w wątkach interfejsu użytkownika.

CWinThread::SetThreadPriority

Ta funkcja ustawia poziom priorytetu bieżącego wątku w klasie priorytetu.

BOOL SetThreadPriority(int nPriority);

Parametry

nPriority
Określa nowy poziom priorytetu wątku w swojej klasie priorytetu. Ten parametr musi być jedną z następujących wartości wymienionych z najwyższego priorytetu do najniższego:

  • THREAD_PRIORITY_TIME_CRITICAL

  • THREAD_PRIORITY_HIGHEST

  • THREAD_PRIORITY_ABOVE_NORMAL

  • THREAD_PRIORITY_NORMAL

  • THREAD_PRIORITY_BELOW_NORMAL

  • THREAD_PRIORITY_LOWEST

  • THREAD_PRIORITY_IDLE

Aby uzyskać więcej informacji na temat tych priorytetów, zobacz SetThreadPriority w zestawie Windows SDK.

Wartość zwracana

Nonzero, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.

Uwagi

Można go wywołać tylko po CreateThread pomyślnym powrocie.

CWinThread::SuspendThread

Zwiększa liczbę wstrzymania bieżącego wątku.

DWORD SuspendThread();

Wartość zwracana

Poprzednia liczba wstrzymania wątku w przypadku powodzenia; 0xFFFFFFFF inaczej.

Uwagi

Jeśli jakikolwiek wątek ma wstrzymywanie liczby powyżej zera, ten wątek nie jest wykonywany. Wątek można wznowić, wywołując funkcję składową ResumeThread .

Zobacz też

CCmdTarget Klasa
Wykres hierarchii
CWinApp Klasa
CCmdTarget Klasa