FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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 |
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
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 |
#4
|
|||
|
|||
pero ... exactamente en la linea while not terminated? f7,f8 con project->options->compiler->debug options activadas.
|
#5
|
|||
|
|||
Internal error EVH-1406 BORdbk60.dll
con F7 justo en ese punto sale Internal Error y se queda ahi..
|
#6
|
|||
|
|||
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 |
|
|
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 |
|