Hvordan lage en MFC Worker tråden

Tråder er objektene som gjør multi-tasking mulig. Tråder, som svarer til en "time slice" eller egen stat av kjørende program, skape illusjonen om at flere brukere kan dele en server applikasjon. The Microsoft Foundation Classes innkapsler tråder via CWinThread klassen, som støtter Bruker- og Worker tråder som kjører i bakgrunnen. I noen få trinn kan du lage et enkelt program å benytte en Worker tråd.

Bruksanvisning

1 Start Microsoft Visual Studio. Lag en dialog-basert MFC-prosjektet ved å klikke på "File" fra menyen øverst og deretter "Ny". Etter å ha klikket på "Projects" -kategorien, velg "MFC AppWizard (exe)" og skriv "WThread" i "Prosjektnavn:" edit boksen. Klikk på "OK". I neste veiviseren skjermen, velg "Dialog basert," klikk "Finish" og "OK". Veiviseren genererer en standard dialogboks og tilhørende kildefilene.

2


Lag en funksjon som vil fungere som Worker tråd for dette MFC opplæringen. Åpne WorkerThreadDlg.cpp filen ved å utvide "Source Files" -mappen i ruten til venstre og dobbeltklikke på filen. Kopier / lim inn følgende kode på slutten av filen:

ugyldig ThreadProcess (LPVOID param) {

CFile f;

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

Cstring str;

for (int i = 0; i <50; i ++) {

str.format ( «Num:% d", i);

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

}

f.Close ();

}

3


Aktiver Worker thread (funksjonen i trinn 2) i en hendelse. For en hendelse, bruker du klikke på standard dialogboksen er "OK" -knappen. Komme tilbake i utformingsmodus ved å trykke Ctrl + F4. Velg "OK" -knappen, og dobbeltklikk på den. Trykk "OK" når "Legg til medlem Function" vises. Kopier og lim inn følgende kode inni bukseseler av "CWorkerThreadDlg :: OnOK ()."

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

Messagebox ( «Worker Thread Aktivert", NULL, NULL);

4

Kompilere og kjøre programmet. Når du klikker på "OK", en meldingsboks vises som sier at bakgrunnen Worker tråden har utført. Gå til prosjektkatalogen og se den skriftlige teksten i "proof.txt."

Hint

  • Du kan starte tråder uten "AfxBeginThread ()" funksjonen ved å opprette en CWinThread-avledet objekt og kaller den "CreateThread ()" medlem funksjon.
  • Denne artikkelen viser ikke multi-tasking fordi det ville kreve etablering av mer enn én tråd objekt.