CWinThread-Klasse

Stellt einen Ausführungsthread innerhalb einer Anwendung dar.

class CWinThread : public CCmdTarget

Mitglieder

48xz4yz9.collapse_all(de-de,VS.110).gifÖffentliche Konstruktoren

Name

Description

CWinThread::CWinThread

Erstellt ein CWinThread-Objekt.

48xz4yz9.collapse_all(de-de,VS.110).gifÖffentliche Methoden

Name

Description

CWinThread::CreateThread

Startet CWinThread Ausführung eines Objekts.

CWinThread::ExitInstance

Überschreiben Sie, um zu bereinigen, wenn der Thread beendet wird.

CWinThread::GetMainWnd

Ruft einen Zeiger auf das Hauptfenster für den Thread ab.

CWinThread::GetThreadPriority

Ruft die Priorität des aktuellen Threads ab.

CWinThread::InitInstance

Überschreiben Sie, um von Threadinstanzinitialisierung auszuführen.

CWinThread::IsIdleMessage

Überprüfungen für Sondermeldungen.

CWinThread::OnIdle

Überschreiben Sie, um des threadspezifische Leerlaufverarbeitens auszuführen.

CWinThread::PostThreadMessage

Sendet eine Nachricht an einen anderen CWinThread-Objekt.

CWinThread::PreTranslateMessage

Filtert Meldungen, bevor sie an den Windows-Funktionen TranslateMessage und DispatchMessage weitergeleitet werden.

CWinThread::ProcessMessageFilter

Abfangbestimmte Meldungen, bevor die Anwendung erreichen.

CWinThread::ProcessWndProcException

Fängt alle Ausnahmen ab, die von der Meldung und von den Befehlshandlern Threads ausgelöst werden.

CWinThread::PumpMessage

Enthält die Nachrichtenschleife des Threads.

CWinThread::ResumeThread

Dekrementiert den Unterbrechungszähler eines Threads.

CWinThread::Run

Steuerungsfunktion für Threads mit einer Nachrichtensystem.Überschreiben Sie, um die standardmäßige Meldungsschleife anzupassen.

CWinThread::SetThreadPriority

Legt die Priorität des aktuellen Threads fest.

CWinThread::SuspendThread

Inkrementiert den Unterbrechungszähler eines Threads.

48xz4yz9.collapse_all(de-de,VS.110).gifÖffentliche Operatoren

Name

Description

CWinThread::operator-HANDLE

Ruft das Handle des CWinThread-Objekts ab.

48xz4yz9.collapse_all(de-de,VS.110).gifÖffentliche Datenmember

Name

Description

CWinThread::m_bAutoDelete

Gibt an, ob das Objekt der Threadbeendigung zerstört.

Windows-Dienstanwendungen

Handle an den aktuellen Thread.

CWinThread::m_nThreadID

ID des aktuellen Threads.

CWinThread::m_pActiveWnd

Zeiger auf das Hauptfenster der Containeranwendung, wenn ein OLE-Server direkt aktiviert ist.

CWinThread::m_pMainWnd

Hält einen Zeiger auf das Hauptfenster der Anwendung.

Hinweise

Der Hauptthread der Ausführung wird normalerweise von einem Objekt bereitgestellt, das von abgeleitet wird, CWinAppCWinApp wird von CWinThread abgeleitet.Zusätzliche CWinThread-Objekte können mehrere Threads innerhalb einer angegebenen Anwendung.

Es gibt zwei allgemeine Typen von Threads, die CWinThread unterstützt: Arbeitsthreads und Benutzeroberflächenthreads.Arbeitsthreads haben keine Haupt-Meldungsverteilschleife: beispielsweise ein Thread, der Hintergrundberechnungen in einer Arbeitsblatt-Anwendung ausführt.Benutzeroberflächenthreads verfügen die Meldungen einer Meldungsverteilschleife und des Prozesses, die vom System empfangen werden.CWinApp und Klassen, die davon abgeleitet werden, sind Beispiele von Benutzeroberflächenthreads.Andere Benutzeroberflächenthreads können direkt aus CWinThread auch abgeleitet werden.

Objekte der Klasse CWinThread sind in der Regel während der Dauer des Threads.Um dieses Verhalten zu ändern, legen Sie m_bAutoDelete zu FALSE fest.

Die CWinThread-Klasse ist erforderlich, um den Code und MFC vollständig threadsicher zu machen.Die lokalen Daten, die vom Framework verwendet werden, um threadspezifische Informationen beizubehalten, werden durch CWinThread-Objekte verwaltet.Daher muss Abhängigkeit auf CWinThread, von lokalen Daten zu bearbeiten, jeder Thread, der MFC verwendet, von MFC erstellt werden.Beispielsweise kann ein Thread, der durch die Laufzeitfunktion _beginthread-Funktion, _beginthreadex erstellt wird, kein MFC APIs verwenden.

Um einen Thread zu erstellen, rufen Sie AfxBeginThread auf.Es gibt zwei Formen, je nachdem, ob Sie einen Arbeits- oder einen Benutzeroberflächenthread soll.Wenn Sie einen Benutzeroberflächenthread möchten, führen Sie auf AfxBeginThread einen Zeiger auf CRuntimeClass aus dem CWinThread von abgeleitete Klasse.Wenn Sie einen Arbeitsthread erstellen möchten, führen Sie auf AfxBeginThread einen Zeiger an die Steuerungsfunktion und den Parameter an die Steuerungsfunktion.Für beide Arbeitsthreads und Benutzeroberflächenthreads können optionale Parameter angeben, die Priorität, Stapelgröße, Erstellungsflags und Sicherheitsattribute ändern.AfxBeginThread gibt einen Zeiger auf dem neuen CWinThread-Objekt zurück.

Anstatt, AfxBeginThread aufzurufen, können Sie CWinThread erstellen von abgeleitetes Objekt und CreateThread dann aufrufen.Dieses zweistufige Bauverfahren ist hilfreich, wenn Sie das CWinThread-Objekt zwischen aufeinander folgender Erstellung und Verlassen von Threadausführungen wiederverwenden möchten.

Weitere Informationen zu CWinThread, finden Sie in Artikel Multithreading in C++ und MFC, Multithreading: Erstellen von Benutzeroberflächenthreads, Multithreading: Erstellen von Arbeitsthreads und Multithreading: Erstellen der Synchronisierungsklassen.

Vererbungshierarchie

CObject

CCmdTarget

CWinThread

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

CCmdTarget-Klasse

Hierarchien-Diagramm

CWinApp-Klasse

CCmdTarget-Klasse