Ver Mensaje Individual
  #1  
Antiguo 08-05-2010
Thoronluin Thoronluin is offline
Miembro
 
Registrado: feb 2009
Posts: 39
Reputación: 0
Thoronluin Va por buen camino
EAccessViolation usando Hilos

Hola compañeros:

Tengo un pequeño problemilla. Estoy creando un pequeño programa que en una de las partes crea un hilo que debe ser ejecutado para no quedar bloqueado por otro proceso, el problema es que cuando me ejecuta el hilo me da el siguiente error:

Debugger Exception Notification
Project Servicio.exe raised exception class EAccessViolation with message ' Access violation at Address 004E8B49 in module 'Servicio.exe'. Read of addres 00000667'.

Para poder estudiarlo mejor he incluido un botón que me crea el hilo en lugar de ser otros procesos quienes me lo creen y he descubierto que si lo que ejecuto es un "Showmessage" la cosa va bien pero si otro objeto me da el error en esa línea como si no estuviera creado. El código es el siguiente:

Código Delphi [-]
TPruebaMensaje = class(TThread)
   private
   protected
   public
      procedure Execute; override;
      procedure UpdateProgress;
 end;  

TVentana_Principal = class(TForm)
...

...
Procedure TPruebaMensaje.Execute;
begin
   Synchronize(UpdateProgress);
end;

procedure TVentana_Principal.Button4Click(Sender: TObject);
var
   MensajeThread: TPruebaMensaje;
begin
   MensajeThread := TPruebaMensaje.Create(True);
   MensajeThread.FreeOnTerminate:=true;
   MensajeThread.Resume;
end;

Procedure TPruebaMensaje.UpdateProgress;
begin
   showmessage('hola');        // Prueba 1
   // Ventana_Principal.Memo1.Lines.Add('pepe'); // Prueba 2
end;

Es la primera vez que inicio un hilo en el foro así que espero no haberme saltado nada de la guía de estilo, si es así por favor disculpen y comentenme lo que sea.

Muchas gracias por su tiempo y paciencia.
Responder Con Cita