Come fare un thread MFC Worker

September 19

Le discussioni sono gli oggetti che rendono possibile il multi-tasking. Fili, ciascuno corrispondente ad un "intervallo di tempo" o uno stato indipendente del programma in esecuzione, creano l'illusione che più utenti possono condividere un'applicazione server. Il Microsoft Foundation Class Library incapsula le discussioni tramite la classe CWinThread, che supporta le discussioni degli utenti e dei lavoratori che vengono eseguiti in background. In pochi passi, è possibile effettuare un semplice programma che utilizza un thread di lavoro.

istruzione

1 Avviare Microsoft Visual Studio. Creare un progetto MFC dialogo-based facendo clic su "File" dal menu in alto e poi "Nuovo". Dopo aver fatto clic sulla scheda "Progetti", selezionare "Creazione guidata applicazione MFC (exe)" e digitare "WThread" nel campo "Nome del progetto:" casella di modifica. Fai clic su "OK". Nella schermata successiva della procedura guidata, selezionare "Dialog based", quindi fare clic su "Fine" e "OK". La procedura guidata genera una finestra di dialogo di default e le sue file di origine associati.

2


Fare una funzione che fungerà da il thread di lavoro per questo tutorial MFC. Aprire il file WorkerThreadDlg.cpp espandendo la cartella "Sorgenti" nel riquadro di sinistra e fare doppio clic sul file. Copia / incolla il seguente codice alla fine del file:

annullare 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


Attivare il thread di lavoro (la funzione al punto 2) in un evento. Per un evento, utilizzare il click del pulsante "OK" della finestra di dialogo di default. Tornare in modalità di progettazione premendo Ctrl + F4. Selezionare il pulsante "OK" e fare doppio clic su di esso. Premere il tasto "OK" quando appare il dialogo "Aggiungi funzione membro". Copia e incolla il seguente codice all'interno delle parentesi graffe di "CWorkerThreadDlg :: OnOK ()."

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

MessageBox ( "thread di lavoro attivato", null, null);

4

Compilare ed eseguire l'applicazione. Quando si fa clic su "OK", apparirà una finestra di messaggio che indica che il thread in background Worker ha eseguito. Andare alla directory del progetto e vedere il testo scritto in "proof.txt."

Consigli e avvertenze

  • È possibile avviare le discussioni senza la funzione "AfxBeginThread ()" con la creazione di un oggetto CWinThread-derivato e chiamando la funzione membro "CreateThread ()".
  • In questo articolo non dimostra multi-tasking, perché ciò richiederebbe la creazione di più di un oggetto thread.