Ver Mensaje Individual
  #2  
Antiguo 04-03-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Pues el error lo tienes aquí:
Código:
void __fastcall TForm1::Button4Click(TObject *Sender)
{
 Capturar *x = new Capturar();
 x->StopThreadPackets();
 delete x;
}
Estas creando un objeto nuevo de la clase Capturar (x) y llamas a una función que utiliza un miembro de esa clase:

Código:
void Capturar::StopThreadPackets()
{
 miThread->Terminate();
}
Pienso que miThread pertenece a la clase Caputrar. miThread es un miembro puntero que si no es un miembro static, ¿a donde apunta al crear un nuevo objeto Capturar?... Pues a un nuevo Thread, probablemente, no conozco más de tu código. Pero es seguro que no apunta al Thread que se está ejecutando, por lo que Terminate() termina con el nuevo Thread y no con el que tu esperabas.

La solución es que tengas controlado el puntero miThread de forma que sea una variable global de Form1, static de la clase Capturar, que lo copies al crear un elemento Capturar o que simplemente Form1 tenga un miembro de la clase Capturar ya creado de forma que no necesites crear uno nuevo para la función Button4Click. En definitiva que sepas que miThread apunta a lo que tu quieres.

Saludos.

Última edición por escafandra fecha: 04-03-2008 a las 23:52:39.
Responder Con Cita