C/Visual C - Worker Threads en MFC

 
Vista:

Worker Threads en MFC

Publicado por Blackby (1 intervención) el 18/08/2003 22:39:22
Podría alguien decirme cómo se puede crear con la biblioteca MFC el procedimiento de ejecución de un hilo de tipo "worker" como método miembro de una clase?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Creación de un hilo worker como método miembro en una clase con MFC

Publicado por Alejandro (1286 intervenciones) el 23/07/2025 22:14:07
Blackby, para crear un procedimiento de ejecución de un hilo de tipo "worker" como método miembro de una clase en MFC, puedes seguir estos pasos:

1. Define un método miembro estático o una función amiga que sirva como punto de entrada del hilo, ya que la función de inicio del hilo en Windows requiere una función con firma específica (por ejemplo, `UINT WINAPI ThreadProc(LPVOID pParam)`).

2. Dentro de esa función, realiza un casting del puntero `LPVOID` a un puntero a tu clase y llama al método miembro correspondiente.

3. Cuando crees el hilo, pasa la instancia de la clase como parámetro.

Aquí tienes un ejemplo básico:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class MiClase {
public:
    void Ejecutar() {
        // Código del hilo
        AfxMessageBox(_T("Hilo en ejecución"));
    }
 
    static UINT WINAPI ThreadEntry(LPVOID pParam) {
        MiClase* pThis = static_cast<MiClase*>(pParam);
        pThis->Ejecutar();
        return 0;
    }
 
    void IniciarHilo() {
        AfxBeginThread(MiClase::ThreadEntry, this);
    }
};

En este ejemplo:
- `ThreadEntry` es la función estática que actúa como punto de entrada del hilo.
- Dentro de `IniciarHilo`, se inicia el hilo pasando la instancia actual (`this`) como parámetro.
- El método `Ejecutar` contiene la lógica que quieres que se ejecute en el hilo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar