Terminare un'applicazione

giovedì 23 dicembre 2004 - 14.19

histaff Profilo | Newbie

Vorrei, da una pagina ASPX, far terminare l'intera applicazione (con tanto di "passaggio" dalla sub Application_End del global.asax). Qualcuno ha idea di come fare?
Tnx

sinapse Profilo | Newbie

ciao..

forse potresti richiamare nella procedura di chiusura dell'applicazione la sub application_end del global.asax , es:
Dim Pippo as New Global

[...]
Pippo.Application_End( "" , e.Empty)
[...]

ciao
Albert


histaff Profilo | Newbie

Ti ringrazio moltissimo per la risposta. Effettivamente sembra terminare l'applicazione, anche se immediatamente dopo mi segnala un errore:



Server Error in '/' Application.
--------------------------------------------------------------------------------

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.



Cmq, visto che fra attimi me ne vado in ferie, direi che momentaneamente utilizzo questa soluzione!!
Grazie ancora!

Brainkiller Profilo | Guru

Come mai hai la necessità di terminare un'applicazione ASP.NET ?
Un'applicazione Web di questo tipo non è per niente simile a una Winform che nasce vive e muore proprio perchè si appoggia ad un listenere che deve continuamente rispondere alle richieste dei client. Eventualmente il sysadmin spegne il processo o il servizio rendendo irraggiungibile l'applicazione.

ciao
david

histaff Profilo | Newbie

Lo faccio perchè - in fase di test dell'applicazione - mi accade che non vengano effettivamente distrutti tutti gli oggetti che istanzio. Come conseguenza ho, ad esempio, che il DB (un file Access) risulti lockato, in uso, e quindi non riesco a "metterci mano".

Brainkiller Profilo | Guru

Ciao,
.NET Framework ha l'innovativo meccanismo del Garbage Collector che se trova oggetti non più utilizzati o non raggiungibili (perdita del puntatore/reference) automaticamente li pulisce dalla memoria e li distrugge.
Quasi tutti gli oggetti hanno i metodi Finalize e/o Dispose per rilasciare le risorse usate dagli oggetti. Prova ad utilizzarli una volta che hai terminato l'uso del DB di Access non dovrebbe più rimanere locckato.

Se non usi oggetti managed ma ADO old-style è probabile ci siano problemi di questo tipo.

ciao
david

histaff Profilo | Newbie

Io chiamo il metodo "Dispose" della connessione, ma il DB (Access) rimane lockato per un tempo random che è inaccettabile per le mie attuali esigenze di debug.

Cmq la soluzione proposta mi dà degli errori e non risolve il mio problema. Qualcuno ha alternative da propormi?

Cteniza Profilo | Guru

Il Dispose NON è la panacea di tutti i mali.
Spesso se si chiama la Dispose a sproposito non solo non si ottiene il risultato ma anzi si genera un maggiore carico di lavoro al GC.
Il consiglio di Microsoft è quello di intervenire implementando IDisposable nelle classi che richiamano oggetti non managed (come dll com+).
Per questi oggetti per facilitare le cose al GC consiglia inoltre di isolare in una classe apposita la singola chiamata alla dll in modo tale che il contatore dei riferimenti possa facilmente essere verificato dal GC che nelle classi dove è implementato IDisposable chiama "lui" Dispose.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5