Como pasarle parámetros a un CWinThread

13/11/2003 - 17:38 por Luis | Informe spam
Hola.

Tengo una aplicación para la que necesito hacer un Thread
(como algunos me habéis aconsejado). Pero no sé como
pasarle parámetros. AfxBeginThread no me lo permite.
Así que declaro un objeto de tipo CEjecucion (derivado de
CWinThread) con un constructor al que le paso parámetros y
luego hago Ejecucion->Run(). No estoy seguro de que
funcione porque no sé cuándo acaba ni puedo depurarlo.

Gracias
 

Leer las respuestas

#1 KAKATUO
13/11/2003 - 19:11 | Informe spam
Luis,
de las dos versiones de AfxBeginThread:

CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int
nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags
= 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );
y

CWinThread* AfxBeginThread( CRuntimeClass* pThreadClass, int nPriority THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0,
LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );

La primera te permite pasar un puntero pParam que se pasará a la función
pfnThreadProc, este puntero te sirve para pasar parámetros a la función.

La segunda te permite utilizar un objeto de una clase derivada de
CWinThread, apuntado por el puntero devuelto por AfxBeginThread y en él
puedes utilizar datos miembro, inicializados con una función miembro
Create(...) por ejemplo que definas, como parámetros de la ejecución del
hilo. Puedes pasar dwCreateFlags = CREATE_SUSPENDED para que no se ejecute
el hilo nada mas crearlo y así poder inicializar los datos miembro.

Saludos.

"Luis" escribió en el mensaje
news:016401c3aa04$a20280d0$
Hola.

Tengo una aplicación para la que necesito hacer un Thread
(como algunos me habéis aconsejado). Pero no sé como
pasarle parámetros. AfxBeginThread no me lo permite.
Así que declaro un objeto de tipo CEjecucion (derivado de
CWinThread) con un constructor al que le paso parámetros y
luego hago Ejecucion->Run(). No estoy seguro de que
funcione porque no sé cuándo acaba ni puedo depurarlo.

Gracias

Preguntas similares