Agregarle parametros al metodo Execute de TThread
hola estoy comenzando la programacion por hilos y ando un poco enrredado en esto:
tengo la siguiente declaracion:
el asunto es que al compilar me da el error: Cita:
Gracias |
investigando un poco encontre este mensaje de Neftali
Override y Virtual la duda sigue porq sengun entendi si lo coloco virtual pierdo la herencia del ancestro :confused: |
Que yo sepa, no puedes.
En la clase TThread, ya está puesto como Virtual y abstract: - Por Virtual, ya puedes hacer un override del método. - Por abstract, no puedes dejar su implementación vacía, si lo haces, en ejecución obtendrás una excepción "abstract error". Dicho esto, puedes sobreescribir (override) el método, pero no puedes cambiar los parámetros, ni si quiera con overload; Solución a este paradigma, crear un método nuevo:
Desde ExecuteWithIndex llamas a Execute tu método que sobreescribe el heredado. Dentro de Execute si puedes usar inherited;
Saludos |
Cita:
Si ahora vas a crear otra clase que hereda de TCompararMd5, sugiero que hagas virtual el ExecuteWithIndex, el Execute lo dejas tal cual, es decir: Cuando ahora llames a Execute, se ejecutarán en este orden: TCompararMd5V2.Execute que al llamar a inherited ejecutará: TCompararMd5.Execute que al llamar a inherited ejecutará: TThread.Execute Saludos |
pues entonces si es verdad lo que investigue :(
otra solucion que he rebuscado es lo siguiente, en la unit tengo el objeto del formulario y el hilo, si comparto una variable global alli puedo compartir la informacion entre los dos objetos. Solo queria asegurarme si mi resultados eran correctos porq nunca he trabajado con hilos |
Editado: veo que ya te han propuesto una solución parecida a esta... Ops! :P
Si realmente necesitas llamar el execute con parámetros, entonces emula el exeute con un proceso tuyo, con lo cual sí podrás pasarle parámetros... Ejemplo:
El código puede tener alguna errata, porqué lo he hecho de memoria sin probarlo xD Pero seguro que entiendes la idea xD Saludos. |
gracias Xesk, estaba pensando en algo similar. He quedado en algo como esto:
|
¿no debería ser así?:
Si es una variable que va a usarse dentro de un Thread, debe ser ThreadSafe. Aunque no veo el asunto claro. Estas creando una clase TCompararMd5 que a partir de un índice abre un archivo. ¿no sería mejor crear una propiedad en el Thread llamada Filename? así no se comparte información entre el hilo y su padre, además nos permitiría reusar la clase sin modificarla. Saludos |
No termino de comprender si nIdx debe compartir su valor entre los diferentes hilos o no, mejor revisa tú mismo si debe ser threadvar o no.
Saludos |
Disculpa la demora pero estaba revisando la ayuda acerca de threadvar y si es lo que necesito, muchisimas gracias
|
La franja horaria es GMT +2. Ahora son las 14:16:07. |
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