62 messaggi dal 27 agosto 2004
Qualcuno può aiutarmi ho una pagina asp.net che deve eseguire dei passaggi lunghi per esempio deve copiare un file di 50 mb e comprimere questo per un tempo che va da 1 a 3 minuti. Ho provato a eseguire i processi in thread separati, ma per qualche motivo le operazioni che provo ad eseguire non vanno a buon fine.
I thread vengono interrotti e sempre in tempi differenti le eccezioni mi danno un thread abort .
Come posso risolvere questo problema provare con pagine asicncrone?
Grazie
più che processi separati dovrebbero essere asincroni.

domanda ma durante queste operazioni l'utente deve ricevere del feedback istantaneo?

altrimenti ci sono altri mille modi per realizzare la cosa

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
ignazz wrote:
Come posso risolvere questo problema provare con pagine asicncrone?

potresti, facendo in modo però che l'esecuzione venga demandata ad un componente che non fa aspettare la pagina.
imho la soluzione migliore in scenari del genere è fare un windows service che esegua una coda e generi in maniera asincrona rispetto all'interfaccia l'operazione. in questo scenario la pagina web fa da front-end e basta, occupandosi di inviare la richiesta, per lasciarla processare al servizio. scala che è un piacere ed è tecnicamente la scelta migliore.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
62 messaggi dal 27 agosto 2004
Grazie della conferma anche io avevo pensato ad un servizio esterno anche perché l'utente non deve avere ne messaggi e ne deve aspettare.
Ma in questo caso come faccio a notificare al servizio di eseguire il processo?
Utilizzo un timer che dopo un certo tempo controlla se occorre eseguire il processo o c'è un modo per notificare la cosa al servizio nel momento in cui l'utente clicca finish sulla pagina?
Grazie del vostro apporto
ignazz wrote:
Ma in questo caso come faccio a notificare al servizio di eseguire il processo?

in uno dei 350 mila modi possibili  coda, database, file di testo.
Utilizzo un timer che dopo un certo tempo controlla se occorre eseguire il processo o c'è un modo per notificare la cosa al servizio nel momento in cui l'utente clicca finish sulla pagina?

il sistema più rapido è probabilmente creare dei file in una directory, che poi il servizio attraverso il FileSystemWatcher monitora per capire quando intervenire. è semplice e ben funzionante e non ti richiede di mettere su una coda di MQ o usare un db. nel file puoi metterci, usando XML, tutto quello che ti serve per istruire il servizio e renderlo general purpose.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

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.