7 messaggi dal 12 novembre 2001
Ho bisogno di richiamare e quindi di attivare una DLL da una pagina ASP.
Il mio problema è questo:
quando richiamo la DLL la pagina ASP si 'congela' e rimane in attesa che la DLL termini il suo ciclo di esecuzione prima di proseguire con le sue operazioni.
Quello che vi chiedo è questo: è possibile che la pagina ASP continui la sua normale esecuzione anche dopo aver richiamato la DLL senza rimanere in attesa? Mi spiego meglio, vorrei che la DLL svolgesse le sue operazione in background senza interrompere la pagina ASP che nel FRATTEMPO dovra continuare a lavorare senza interrurzioni...
Spero di essermi spiegato bene,
ringrazio per la Vostra attenzione, Lorenzo

Lorenzo Pini
Web Master Site
879 messaggi dal 09 luglio 2002
www.i-studio.it
Ma la DLL puo' essere invocata una volta solo per tutti gli utenti del sito? Se si, potresti creare l'istanza nel global.asa nelle sub Application_OnStart o Session_OnStart. A quel punto, ogni volta che ti serve dovresti solo recuperare il riferimento alla DLL.

In alternativa, se la DLL viene invocata nella stessa pagina dove ci sono le altre istruzioni ASP non puoi far lavorare la pagina in background. Una soluzione la potresti avere usando una struttura a frames:
in un frame invochi la DLL, fai le operazioni che ti servono e memorizzi il risultato ad esempio in una var di Sessione; nell'altro frame esegui le altre istruzioni ASP. Solo che cosi' facendo dovresti studiare un modo per "accorgerti" che il frame con la DLL ha terminato le operazioni... in teoria si puo' fare... e' solo da provare

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
7 messaggi dal 12 novembre 2001
beh la soluzione potrebbe essere giusta ma ho già provato ad impostare la pagina a frameset; in un frame nascosto ho inserito la mia pagina che richiama la DLL. Risultato... quando la DLL è in esecuzione anche il frameset ne risente pertanto anche la probabile pagina posta come main del frameset si rallenta notevolmente e mi rilascia la pagina solamente una volta terminata l'esecuzione della DLL.

Lorenzo Pini
Web Master Site
879 messaggi dal 09 luglio 2002
www.i-studio.it
Allora potresti seguire la strada del global.asa? In quel caso, se invochi la DLL a livello di Application il sistema rallentera' solo quando il primo utente accedera' al sistema...
Si puo' fare?

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
2.584 messaggi dal 14 maggio 2001
Come apri i due frame? mi spiego meglio non puoi lanciare il frame main ed eseguire in ritardo il frame dll?
11.886 messaggi dal 09 febbraio 2002
Contributi
se devi eseguire una dll in modo asincrono (cioè se la pagina asp deve solo lanciare il processo e ignorare del tutto il risultato) allora ti conviene usare usare lo shell per eseguire un file .vbs che a sua volta fa partire la dll in background, rendendo "libera" la pagina .asp.

così (se non sbaglio sintassi)

<%
set sh = Server.CreateObject("WScript.Shell")
sh.Run("file.vbs")
%>

nel file .vbs metterai:

dim miadll
set miadll = CreateObject("Nomeprogetto.Nomeclasse")
miall.vaiColMetodo()

P.s.
se la dll impiega troppo tempo, non conviene chiamarla dalla pagina asp, potrebbe anche farla andare in timeout
Modificato da BrightSoul il 31 luglio 2003 12.07 -

Enjoy learning and just keep making
7 messaggi dal 12 novembre 2001
Mi sembra veramente una buona soluzione...passo all'execute

Lorenzo Pini
Web Master Site
7 messaggi dal 12 novembre 2001
BrightSoul ha scritto:
se devi eseguire una dll in modo asincrono (cioè se la pagina asp deve solo lanciare il processo e ignorare del tutto il risultato) allora ti conviene usare usare lo shell per eseguire un file .vbs che a sua volta fa partire la dll in background, rendendo "libera" la pagina .asp.

così (se non sbaglio sintassi)

<%
set sh = Server.CreateObject("WScript.Shell")
sh.Run("file.vbs")
%>

nel file .vbs metterai:

dim miadll
set miadll = CreateObject("Nomeprogetto.Nomeclasse")
miall.vaiColMetodo()

P.s.
se la dll impiega troppo tempo, non conviene chiamarla dalla pagina asp, potrebbe anche farla andare in timeout
Modificato da BrightSoul il 31 luglio 2003 12.07 -


Il problema è che non riesco a richiamare il mio progetto vbp. Io utilizzo visual basic 6.0.
E' possibile manchi l'oggetto wscript.shell??? In tal caso come dovrei fare?

Lorenzo Pini
Web Master Site

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.