Nwlapcug.com


Come fare un Thread di lavoro MFC

I thread sono oggetti che rendono multi-tasking possibili. Discussioni, ciascuna corrispondente ad una "fetta di tempo" o stato separato di programma in esecuzione, creare l'illusione che più utenti possono condividere un'applicazione server. La libreria Microsoft Foundation Class incapsula thread tramite la classe CWinThread, che supporta l'utente e i thread di lavoro eseguire in background. In pochi passi, è possibile rendere un semplice programma che utilizza un Thread di lavoro.

Istruzioni

1

Avviare Microsoft Visual Studio. Creare un progetto MFC basato su finestra di dialogo facendo clic su "File" dal menu in alto e quindi "nuovo". Dopo aver cliccato su "Progetti" scheda, selezionare "MFC AppWizard (exe)" e digitare "WThread" il "nome progetto:" casella di modifica. Fare clic su "OK". Nella schermata successiva della procedura guidata, selezionare "Base di finestra di dialogo", quindi fare clic su "Finish" e "OK". La procedura guidata genera una finestra di dialogo predefinita e i file di origine associato.

2


Fare una funzione che agirà come il thread di lavoro per questo tutorial MFC. Aprire il file WorkerThreadDlg.cpp espandendo la cartella "Source file" nel riquadro sinistro e doppio clic sul file. Copia/incolla il seguente codice sorgente alla fine del file:

void {ThreadProcess(LPVOID param)

CFile f;

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

CString str;

per (int i = 0; i
Str.Format ("Num: %d", i);

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

}

f.Close();

}

3


Attivare il thread di lavoro (la funzione nel passaggio 2) in un evento. Per un evento, utilizzare il click del pulsante "OK" della finestra di dialogo predefinita. Tornare in modalità progettazione premendo Ctrl + F4. Selezionare il pulsante "OK" e fare doppio clic su esso. Premere "OK" quando viene visualizzata la finestra "Aggiungi funzione membro". Copiare e incollare il codice seguente 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", una finestra di messaggio verrà visualizzato che indica che ha eseguito il Worker thread in background. Vai alla directory del progetto e vedere il testo scritto in "proof.txt."

Consigli & Avvertenze

  • È possibile avviare discussioni senza la funzione "AfxBeginThread ()" creando un oggetto derivato da CWinThread e chiamando la funzione membro "CreateThread ()".
  • Questo articolo non dimostra multitasking perché che richiederebbe la creazione di più di un oggetto thread.