Wie man einen MFC-Arbeits-Thread

September 5

Threads sind die Objekte, die Multitasking-Stellen möglich. Threads, jeweils einen "Time Slice" oder getrennten Zustand des ausgeführten Programms, erstellen die Illusion, dass mehrere Benutzer eine Server-Anwendung austauschen können. Die Microsoft Foundation Class-Bibliothek kapselt Threads über die CWinThread-Klasse, die Benutzer unterstützt und Worker-Threads, die im Hintergrund ausgeführt. In wenigen Schritten können Sie ein einfaches Programm nutzt einen Worker-Thread machen.

Anweisungen

1 Starten Sie Microsoft Visual Studio. Erstellen Sie eine dialogbasierte MFC-Projekt durch Klicken auf "Datei" aus dem oberen Menü und dann "neu". Nach dem Klicken auf "Projects" Registerkarte, wählen Sie "MFC-AppWizard(exe)" und geben Sie "WThread" in der "Projektname:" Bearbeitungsfeld. Klicken Sie auf "OK". Im nächsten Assistentenbildschirm wählen Sie "Dialogfeldern basierende", und klicken Sie auf "Fertig stellen" und "OK". Der Assistent erstellt ein Standard-Dialogfeld und die zugehörigen Quelldateien.

2

Stellen Sie eine Funktion, die der Worker-Thread für dieses Tutorial MFC sein werden. Öffnen Sie die WorkerThreadDlg.cpp-Datei, indem Sie erweitern den Ordner "Quelldateien" im linken Fensterbereich und doppelklicken auf die Datei. Kopiere den folgenden Quellcode am Ende der Datei:

void ThreadProcess(LPVOID param) {}

CFile f;

f.Open ("proof.txt", modeCreate | ««CFile::modeWrite);

CString str;

für (Int i = 0; iStr.Format ("Num: %d", i);

f.Write (str, str. GetLength());

}

f.Close();

}

3

Den Worker-Thread (die Funktion in Schritt 2) in einem Fall zu aktivieren. Verwenden Sie für ein Ereignis das Standard-Dialogfeld "OK" Klick. Gelangen Sie zurück in den Entwurfsmodus durch Drücken von STRG + F4. Wählen Sie die Schaltfläche "OK", und doppelklicken Sie darauf. Drücken Sie "OK", wenn das "Member-Funktion hinzufügen" angezeigt wird. Kopieren Sie und fügen Sie den folgenden Code innerhalb der Klammern "CWorkerThreadDlg::OnOK()."

AfxBeginThread (ThreadProcess, NULL, THREAD_PRIORITY_TIME_CRITICAL0, 0, NULL);

MessageBox ("Worker-Thread aktiviert", NULL, NULL);

4 Kompilieren Sie und führen Sie die Anwendung. Wenn Sie auf "OK" klicken, wird ein Meldungsfeld angezeigt, dass der Hintergrund Arbeitsthread ausgeführt wurde. Gehen Sie in das Projektverzeichnis und sehen Sie den geschriebenen Text in "proof.txt."

Tipps & Warnungen

  • Sie können Threads ohne die Funktion "AfxBeginThread()" starten, indem Sie ein CWinThread abgeleitetes Objekt erstellen und die "CreateThread()" Member-Funktion aufrufen.
  • In diesem Artikel zeigen nicht Multitasking, weil, die mehr als ein Thread-Objekt erfordern würde.