
Ein CWinThread -Objekt stellt einen Ausführungsthread innerhalb einer Anwendung. Der Haupt-Thread der Ausführung wird in der Regel durch ein von CWinAppabgeleitetes Objekt bereitgestellt; CWinApp ist von CWinThreadabgeleitet. Zusätzliche CWinThread -Objekte können mehrere Threads innerhalb einer bestimmten Anwendung.
Es gibt zwei allgemeine Arten von Threads, die CWinThread unterstützt: Arbeitsthreads und Benutzeroberflächenthreads. Worker-Threads haben keine Nachricht Pumpe: z. B. einen Thread, der in einer Tabellenkalkulationsanwendung Hintergrund Berechnungen durchführt. Benutzeroberflächenthreads haben ein Nachrichtensystem und vom System empfangene Nachrichten verarbeiten. CWinApp und davon abgeleitete Klassen sind Beispiele von Benutzeroberfläche Threads. Anderen Benutzeroberfläche Threads können auch direkt von CWinThread abgeleitet werden.
Objekte der Klasse CWinThread bestehen in der Regel für die Dauer des Threads. Wenn Sie dieses Verhalten ändern möchten, legen Sie M_bAutoDelete auf FALSE.
Die CWinThread -Klasse ist notwendig, um Ihren Code und MFC vollständig threadsicher. Lokalen Thread-Daten vom Framework verwendet werden, um Thread-spezifische Informationen ist von CWinThread -Objekte verwaltet. Aufgrund muss dieser Abhängigkeit von CWinThread lokalen Thread-Daten zu behandeln jedem Thread, der MFC verwendet von MFC erstellt werden. Beispielsweise ein Thread erstellt von Run-Time-Funktion _beginthreadex können keine MFC-APIs verwenden.
Um einen Thread zu erstellen, rufen Sie AfxBeginThread zur Verfügung gestellt. Es gibt zwei Arten, abhängig davon, ob einen Arbeitnehmer oder Benutzeroberfläche Thread soll. Möchten Sie einen Benutzeroberfläche Thread, an AfxBeginThread übergeben einen Zeiger auf das CRuntimeClass von Ihrem CWinThread-abgeleitete Klasse. Wenn Sie einen Worker-Thread erstellen möchten, an AfxBeginThread übergeben Sie einen Zeiger auf die Steuerungsfunktion und der Parameter für die Steuerungsfunktion. Für Arbeitsthreads und Benutzeroberflächenthreads können Sie optionale Parameter angeben, die Priorität, Stack-Größe, Erstellung Flags und Sicherheitsattribute ändern. AfxBeginThread wird einen Zeiger auf das neue CWinThread -Objekt zurückzugeben.
Anstelle von AfxBeginThreadaufrufen, können Sie erstellen ein CWinThread-abgeleitete Objekt und rufen dann CreateThread. Diese zwei-Phasen-Aufbau-Methode ist nützlich, wenn Sie das CWinThread -Objekt zwischen aufeinander folgenden Erstellung und Kündigungen von Thread Hinrichtungen wiederverwenden möchten.
Weitere Informationen über CWinThreadfinden Sie in die Artikeln Multithreading mit C++ und MFC, Multithreading: Erstellen von Benutzeroberflächen-Threads, Multithreading: Erstellen von Arbeitsthreads, und Multithreading: Verwendung die Synchronisierungsklassen im Visual C++ Programmer's Guide.
Klassenmember |nbsp; Basisklasse | Hierarchiediagramm
Beispiel&Nbsp; MFC MTGDI-Beispiel
Siehe auch&Nbsp;CWinApp, CCmdTarget