Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-05-2020
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Problemas con creación de hilo

Hola amigos, tengo esto en un botón del form:
Código PHP:
Depurador->InitDebug(NULL,MODE_ATACH_BY_WINDOW_NAME,wndName,NULL); //Inicializamos el debugger
Depurador->LoopDebug(); //Arrancamos el bucle de depuracion
//::Sleep(20);
Depurador->SetBP(DIR_BP_IDS); 
El metodo LoopDebug crea el hilo:
Código PHP:
void TDebugger::LoopDebug(void)
{
    
//Creo el hilo suspendido
    
HiloDepuracion = new(std::nothrowTHiloDebugger(false,Mode,PathFile,NameWindow,pid,this); 
El problema que tengo es que tarda menos en ejecutarse la siguiente linea del botón que internamente hace esto:
Código PHP:
bool THiloDebugger::SetBP(DWORD address)
{
        
bool salida true;
        
BYTE bp 0xCC;
        
unsigned long retval 0;
        
BYTE original;
        
TBP MyBP;
        
int pos;

        
pos SearchBPOnList(address, &MyBP); 
que en crearse el hilo y ejecutar cosas como estas:
Código PHP:
void __fastcall THiloDebugger::Execute()
{
        
DEBUG_EVENT DebugEv;
        
HANDLE CurrentExceptionThread;
        
DWORD dwContinueStatus;
        
int Error;
        
TDll *ItemDLL;
        
bool salir=false;

        
ListaBPs = new TList;
        
ListaDlls = new TList;
        
ListaThreads = new TList;

        
Synchronize(OnInitLoopDebugThread); //Usaremos este evento para inicialización de variables en la clase usuario si se requiere. 
y cuando intento poner el Breakpoint hace esto internamente:
Código PHP:
int THiloDebugger::SearchBPOnList(DWORD addresspBP lpMyBP)
{
        
pBP BP;
        
int x 0;
        
bool encontrado false;
        for(
x=0ListaBPs->Countx++)
        {
                
BP = (TBP*)ListaBPs->Items[x];
                if(
BP->dir == address)
                { 
Con lo que me encuentro con que al poner el Breakpoint lo va a buscar en la TList ListaBPs y esta aun no se ha creado. Lo he solucionado poniendo un ::Sleep(20) justo antes de poner el Breakpoint pero creo que es una autentica chapuza. ¿que podría hacer para no tener este problema?
Intenté poniendo después de crear el hilo con:
Código PHP:
HiloDepuracion->WaitFor(); 
pero me cansé de esperar y no regresa nunca porque supongo que eso espera hasta que termine el hilo y el hilo es el que tiene el bucle de los eventos así que no va a salir nunca.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas para acceder a componenente de un Form desde un Hilo NEG1414 C++ Builder 3 05-02-2015 11:19:10
Problemas con ejecución de hilo GerTorresM OOP 3 23-10-2014 19:01:12
Problemas con un Hilo aguml C++ Builder 10 08-03-2014 00:20:58
cuando llamo ejecutar un hilo dentro del proceso del hilo no lo hace robertosc Varios 1 14-08-2007 22:11:09


La franja horaria es GMT +2. Ahora son las 09:22:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi