Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-07-2008
ginasil ginasil is offline
Miembro
 
Registrado: jun 2004
Posts: 20
Poder: 0
ginasil Va por buen camino
Error AccesViolation en Threads

Hola a todos,
Por favor me podrian colaborar con u problema con Threads que generan error Accesviolation, segun lo que lei un thread "All threads of a process share the same address space" y no he podido hacer que cada uno tenga una dirección diferente.
tengo 10 progressBar y 10 checklistbox donde la idea es que por cada checklist un Thread me indique en el progressbar que el checklist esta actualizado:

type
Thilo_muestraestado = class(TThread)
private
Caja: TCheckListBox;
Num,mensaje,cod,accion,tipo : String;
protected
procedure Execute; override;
procedure MostrarProgreso;
procedure MostrarProgreso2;
public
constructor Create(Caja: TCheckListBox;Num : string);
end;

/**en public
hilo1,hilo2,..... hasta hilo10 : Thilo_muestraestado;

procedure Thilo_muestraestado.Execute;
var
k,i : integer;
begin
try
while not Terminated do
begin
//*** Ejecuta una consulta y si la hace
Synchronize( MostrarProgreso );
y si no la hace...
Synchronize( MostrarProgreso2 );
end;
finally
end;
end;

//** cuando inicia el form asigno los diez hilos...
if not Assigned(hilo0) then hilo0 := Thilo_muestraestado.Create(StringGrid2,'0');
if not Assigned(hilo1) then hilo1 := Thilo_muestraestado.Create(StringGrid3,'1');
... y asi...

procedure Thilo_muestraestado.MostrarProgreso;
begin
if Terminated then exit;
... agrega y borra lineas del stringrid... que lo llamo

if cajon = '0' then aumenta(Form1.ProgressBar0);
if cajon = '1' then aumenta(Form1.ProgressBar1);
y asi los diez...
end;

procedure Thilo_muestraestado.MostrarProgreso2;
begin
/**solo para que muestre progreso....
if cajon = '0' then aumenta(Form1.ProgressBar0);
if cajon = '1' then aumenta(Form1.ProgressBar1);
y asi los diez...
end;

Gracias
Responder Con Cita
  #2  
Antiguo 10-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola. Se supone que en el constructor creas el checkbox no? veo q tienes el nombre del parametro (caja) igual que el de la variable. Me parece que el problema esta por alli...

EDITO : relei y quizas no. mediante el debugger, en que linea se te para?

Última edición por coso fecha: 10-07-2008 a las 23:20:12.
Responder Con Cita
  #3  
Antiguo 10-07-2008
ginasil ginasil is offline
Miembro
 
Registrado: jun 2004
Posts: 20
Poder: 0
ginasil Va por buen camino
se para en: while not Terminated do y saca 4 errores y no vuelven a funcional los hilos...

los checklistbox los tengo en el form para que me muestre una serie de datos...

gracias
Responder Con Cita
  #4  
Antiguo 10-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
pero ... exactamente en la linea while not terminated? f7,f8 con project->options->compiler->debug options activadas.
Responder Con Cita
  #5  
Antiguo 11-07-2008
ginasil ginasil is offline
Miembro
 
Registrado: jun 2004
Posts: 20
Poder: 0
ginasil Va por buen camino
Internal error EVH-1406 BORdbk60.dll

con F7 justo en ese punto sale Internal Error y se queda ahi..
Responder Con Cita
  #6  
Antiguo 11-07-2008
ginasil ginasil is offline
Miembro
 
Registrado: jun 2004
Posts: 20
Poder: 0
ginasil Va por buen camino
dentro del execute yo he colocado un Tquery
var
consulta : TQuery;

y lleno esa consulta y es alli donde manda el AccessViolation
consulta.SQL.Clear;
consulta.SQL.Add(' select codigo from rutas ');
consulta.SQL.Add(' where estado <> '+cajon + ' ' + ' and codigo in (' +rutas+ ')' );
consulta.Active := true;
consulta.First;

y cuando miro el debug threads muestra un thread id por cada hilo pero todos en la misma location (direccion de memoria?)...

gracias
Responder Con Cita
Respuesta



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
Indy y Threads PeLuCa Internet 20 13-01-2011 00:42:21
Error in my_thread_global_end(): 4 threads didn't exit ??? foetus PHP 2 26-10-2007 18:52:16
uso de threads JULIPO API de Windows 2 25-07-2007 16:09:06
Error: Delphi 2006 + Debugger + Threads xEsk Varios 0 16-02-2007 16:03:19
Threads y transacciones anduj Conexión con bases de datos 5 12-07-2005 20:31:40


La franja horaria es GMT +2. Ahora son las 14:50:35.


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