Ayuda / Sugerencias con una dll

26/07/2010 - 12:48 por CalcU | Informe spam
Buenas, he creado una dll (Wrapper creo que se llama), para que esta dll mia
lea una dll creada con un sistema .NET., si no recuerdo mal ya pedí ayuda en
su momento para la creacion de esa dll xDD.

la cosa es que funciona bien, hace todo lo que tiene que hacer, pero me
surge un problema en un caso concreto... esa Dll la van a usar bajo delphi
7, funciona y funciona bien, peeero parece que retrasa la ejecucion del
programa un pelo, supongo porque espera que se le devuelva la peticion que
se le ha hecho a mi dll.

Mi pregunta es: puedo hacer algo yo en mi dll para que cuando se le pida
algo, libere al programa principal mientras esta trabaja y luego le devuelva
los datos? o por el contrario, es desde el programa principal donde se debe
organizar esto?

gracias!

Preguntas similare

Leer las respuestas

#1 aa
26/07/2010 - 20:30 | Informe spam
Desde donde la llaman tiene que hacerlo asincrono y esperar el resultado en
un hilo.
"CalcU" wrote in message
news:i2jpc2$rlr$
Buenas, he creado una dll (Wrapper creo que se llama), para que esta dll
mia lea una dll creada con un sistema .NET., si no recuerdo mal ya pedí
ayuda en su momento para la creacion de esa dll xDD.

la cosa es que funciona bien, hace todo lo que tiene que hacer, pero me
surge un problema en un caso concreto... esa Dll la van a usar bajo delphi
7, funciona y funciona bien, peeero parece que retrasa la ejecucion del
programa un pelo, supongo porque espera que se le devuelva la peticion que
se le ha hecho a mi dll.

Mi pregunta es: puedo hacer algo yo en mi dll para que cuando se le pida
algo, libere al programa principal mientras esta trabaja y luego le
devuelva los datos? o por el contrario, es desde el programa principal
donde se debe organizar esto?

gracias!

Respuesta Responder a este mensaje
#2 CalcU
27/07/2010 - 11:33 | Informe spam
Desde donde la llaman tiene que hacerlo asincrono y esperar el
resultado en un hilo.




gracias!, se lo comentare.
Respuesta Responder a este mensaje
#3 Waldo
27/07/2010 - 14:51 | Informe spam
Tu DLL tendria que tener una funcion publica que es la que llaman
desde el ejecutable, y un evento que se dipara cuando termino el
proceso

Algo asi

DLL:

Public Event Resultado(total as integer)

Public Sub Calcular(datoA, datoB)

End Sub

Dentro de algun timer
Fin Proceso
'dispara evento
RaiseEvent Resultado Total


EXE:

La instancias con
Dim MyDLL WithEvents

al usar WithEvents, en el IDE va a aparecer MyDLL con el Evento
Resultado
te quedaria
Private MyDLL_Resultado(total as integer)
msgbox total
End Sub
Respuesta Responder a este mensaje
#4 CalcU
27/07/2010 - 15:19 | Informe spam
Uhmmm, interesante, voy a ver si lo consigo implementar asi, gracias!



Tu DLL tendria que tener una funcion publica que es la que llaman
desde el ejecutable, y un evento que se dipara cuando termino el
proceso

Algo asi

DLL:

Public Event Resultado(total as integer)

Public Sub Calcular(datoA, datoB)

End Sub

Dentro de algun timer
Fin Proceso
'dispara evento
RaiseEvent Resultado Total


EXE:

La instancias con
Dim MyDLL WithEvents

al usar WithEvents, en el IDE va a aparecer MyDLL con el Evento
Resultado
te quedaria
Private MyDLL_Resultado(total as integer)
msgbox total
End Sub
Respuesta Responder a este mensaje
#5 CalcU
11/08/2010 - 14:40 | Informe spam
Bueeeeeno, he creado la dll como me sugirio Waldo, con eventos, pero me
gustaria mejorarla un poco mas, me explico:

la dll me va a sacar unos 10 datos.
He creado 1 evento y cada dato lo marco inicialmente para saber que dato es,
los marco asi:

msg01dato01
msg02dato02
etc...

en la dll he montado 1 timer, y cada segundo hace el proceso necesario para
calcular esos datos y disparar el evento, asi solo disparo un evento y desde
el prorgama que la lee con un simple if discrimino a que pertenece. Pero
parece que me ralentiza un poco el programa principal...

Cambio la forma? se me ocurren varias posibilidades:

1.- 1 evento marcado (como ahora) y el programa se encarga de discriminar
2.- 10 eventos, cada uno con 10 timers
3.- 10 eventos, SIN timer, que los pida el programa
4.- 1 evento SIN timer, que lo pida el programa

cual seria la mejor forma?
cierto que de los 10 eventos 4 son importantes y necesario que se actualicen
cada segundo, los otros no tanto..., asi que es un poco absurdo usar los
recursos de los 6 que no se van a usar tan a menudo...

ideas? otra forma mejor?
la idea es que el programa principal NO se ralentice o no note que la dll
esta trabajando, vamos.

gracias!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida