indy 10 y sincronizacion
Hola compis. Tengo un componente idftpserver y un lisbox donde pretendo mostrar su estado (conectado, login, etc). Se que no debo meter nada en el lisbox dentro de los metodos del idftpserver porque puedo provocar un "access violation" o algo peor. Necesito sincronizar como se hace en los thread normales pero no veo la forma (ya he buscado en los foros, en la red, en el manual, etc)
He encontrado este codigo pero es de indy 9 y no se como pasarlo a indy 10, vamos que no encuentro el metodo syncronize en el tIdContext o como indicar su thread. Espero que puedan ayudarme. Gracias
|
Las Indy ya tienen sus propias clases para sincronizar. Mira en la ayuda las clases TIdSync y TIdNotify..
|
Gracias Delfino.
Ya las he implementado aunque ya he descubierto que tienen sus "cosillas" porque ha veces con formularios dinamicos (o no) tambien da algun "access violation" pero parece que "mejor controlados". Pongo un ejemplo para el que lo necesite. Uses IdSync. // necesario // definir clase type TLogSync = class(TIdSync) protected s: string; procedure DoSynchronize; override; public procedure Write(const texto: string); end; // Sincronizacion procedure TLogSync.DoSynchronize; begin try FormMain.ListBox1.Items.Add(s); except on e: Exception do Exit; end; end; procedure TLogSync.Write(const texto: string); begin s := texto; Synchronize; end; // uso procedure TFormMain.IdTCPServerLog(msg: string); var LogSync: TLogSync; begin LogSync := TLogSync.Create; LogSync.Write(msg); LogSync.Free; end; |
La franja horaria es GMT +2. Ahora son las 01:01:17. |
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