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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #12  
Antiguo 10-02-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.875
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por gluglu Ver Mensaje
Antes de nada, decirte que el último ZIP añadido no está accesible en estos momentos. El contenido es ilegible y da error. Así que no he podido revisar este último código que adjuntas.
Lo he vuelto a subir. No se porqué con segun qué programas utilizo para comprimir, luego a algunas personas les da problemas al descomprimir. Hay un .RAR.ZIP que hay que quitarle la extension ZIP y dejarlo en RAR.

Cita:
Empezado por gluglu Ver Mensaje
(1) Ya me queda claro que no declaré el Thread Calculate_Total en la unit List_General como private. Entiendo que en cualquier caso, también se podría declarar como público, no es verdad ?

(2) En el primer ejemplo tu utilizas el propio método Create para pasar los parámetros a cada Thread. Personalmente nunca lo he utilizado así y no sé si es mejor o peor.
(1) No es que no pueda ser público, simplemente es que si lo declaras como privado de alguna forma te aseguras de que nadie accede a él por error, porque desde fuera no es visible. Si está declarado como público significa que cualquiera puede acceder a él. Pero lo que es funcionar, debe funcionar igual.

(2) En este caso es cuestion de gustos. Yo utilizo en algunos casos el create para pasar pasar parámetros y en otros, primero hago el create y luego asigno valor a las propiedades. No hay diferencia es cuestión de gustos.

Cita:
Empezado por gluglu Ver Mensaje
Por lo tanto entiendo también que puedo pasar tanto la referencia de la instancia del Form List_General en concreto que ejecuta el Thread al propio Thread, o puedo pasar una variable Pos_Array que es la cual me indica la posición en el Array Arr_List declarado en el MainForm, y después hacer referencia al listado en concreto como MainForm.Arr_List[Pos_Array] y a continuación el elemento que quiera.
Lo que no tengo claro es que no te de problemas al acceder desde el Thread a cosas que hay fuera, como los formularios. Aunque los pasemos como parámetro, no quiere decir que no fallen al acceder. De ahí que acceder al MainForm, para luego al array, y desde ahí al formulario tenga bastantes número de dar problemas.

Cita:
Empezado por gluglu Ver Mensaje
El procedimiento Calculate_Detail, como decía, está en otra Unit diferente y puede ser llamado por otros muchos forms de mi aplicación, al igual que se llama a este procedimiento desde el propio Thread. Pienso que esto es posible, no ? Es correcto hacerlo así, no ?
También creo que te puede dar problemas. Para utilizar algo externo al thread utilizas el Synchronize, para evitar conflictos entre diferentes threads. Cuando accedes a este procedimiento y a todo lo que hay dentro, deberías asegurarte de que lo haces de forma exclusiva; Si no es así puedes obtener errores.

Cita:
Empezado por gluglu Ver Mensaje
Mi duda es cómo actualizo una variable del Thread (Calculate_Total) desde el procedimiento Calculate_Detail ?
El problema creo que no es cómo actualizar la variable (puede ser como en un procedimiento normal), sino que ese procedimiento se ejecute de forma "thread-safe", que creo que es lo que no estás asegurando ahora.

¿Porqué no colocas ese procedimiento Calculate_Detail como un procedimiento interno (private) del thread?
¿Es posible? Si no utiliza nada externo no debes tener problemas, y si utiliza algo externo para no poder ponerlo como privado, ese es el problema.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
Firebird AND Threads Abel Garcia Firebird e Interbase 21 19-03-2008 05:07:21
uso de threads JULIPO API de Windows 2 25-07-2007 16:09:06
Threads in DLL's Gianni Varios 0 20-07-2007 22:18:23
Threads zombies Archer Varios 1 25-09-2006 19:19:38
problemas con threads dentro de un componente elcigarra OOP 26 26-05-2005 04:29:35


La franja horaria es GMT +2. Ahora son las 10:53:35.


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