C/Visual C - Funciones de MFC

 
Vista:

Funciones de MFC

Publicado por Francisco J. Massó Carrera (2 intervenciones) el 20/09/2001 16:37:14
Un cordial Saludo...
Soy nuevo en la programacion de VC++, me gustaria saber si existe una funcion bajo las ventanas de dialogos de MFC en la que yo pueda agregar algo de codigo el cual me permita evaluar una condicion todo el Tiempo; ya la implemente bajo la Funcion TIMER, pero algunas no se evalua la condicion, lo que pasa es que necesito evaluar las condiciones de los puertos (y estos cambiam en microsegundos)... como puedo hacer para evaluar la condicion TODO EL TIEMPO (no por instantes de milisegundos.. )..

De antemano, muchas gracias..

Francisco Javier Massó Carrera [email protected]>
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

Evaluación continua de condiciones en MFC

Publicado por Alejandro (913 intervenciones) el 15/10/2024 23:01:10
Estimado Francisco,

Un cordial saludo. Entiendo que deseas evaluar condiciones de manera continua en una aplicación de MFC, especialmente para monitorear cambios en los puertos en tiempo real. Aquí te presento una solución que podría ayudarte:

1. Uso de un hilo (thread): En lugar de depender únicamente de un temporizador, puedes crear un hilo que se ejecute en segundo plano y evalúe las condiciones de manera continua. Esto te permitirá realizar la evaluación sin interrupciones.

2. Implementación:
- Crea una clase derivada de `CWinThread` para manejar el hilo.
- En el método `InitInstance`, inicia un bucle que evalúe las condiciones deseadas.
- Asegúrate de incluir un mecanismo para detener el hilo cuando ya no sea necesario.

Aquí tienes un ejemplo básico de cómo podrías implementar esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class CMyThread : public CWinThread
{
public:
    virtual BOOL InitInstance();
    virtual int ExitInstance();
 
    void EvaluateConditions();
};
 
BOOL CMyThread::InitInstance()
{
    while (true) // Bucle infinito para evaluación continua
    {
        EvaluateConditions();
        Sleep(1); // Pequeña pausa para evitar el uso excesivo de CPU
    }
    return TRUE;
}
 
void CMyThread::EvaluateConditions()
{
    // Aquí evalúa las condiciones de los puertos
    // Implementa tu lógica de evaluación
}
 
// En tu clase de diálogo, inicia el hilo
CMyThread* pThread = (CMyThread*)AfxBeginThread(RUNTIME_CLASS(CMyThread));

3. Consideraciones:
- Asegúrate de manejar adecuadamente la sincronización si el hilo necesita acceder a recursos compartidos.
- Ten en cuenta el uso de `Sleep` para evitar que el hilo consuma demasiados recursos de CPU.

Espero que esta solución te sea útil.

Saludos cordiales,
Ale.
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