Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Dispose e finalize con garbage collector
lunedì 20 aprile 2009 - 15.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
andreapavia
Profilo
| Senior Member
203
messaggi | Data Invio:
lun 20 apr 2009 - 15:57
ciao a tutti, avrei un problema...
ho una dll istallata con 2 metodi pubblici (PRENDIil parametro e il dispose) e uno privato nel dispose (SCRIVI) che scrive in file di log e per forza la devo chiamare da vbscript
***********************************************************
mio.vbs
Public objDLLSCRIVI
Call Main
Private Sub Main
Set objLogger = CreateObject("objDLLSCRIVI")
For iii = 0 To 700
objDLLSCRIVI.prendi(iii)
End If
Next
'possibile errore
For jjj= 0 To 10
objDLLSCRIVI.prendi(jjj)
End If
Next
objDLLSCRIVI.dispose()
exit sub
*********************************************************************************
DLLSCRIVI
private STRINGA as string =""
Public sub prendi(byval sss as string)
STRINGA = STRINGA + sss
end sub
Private sub SCRIVI()
My.Computer.FileSystem.WriteAllText("c:\FFF.txt", STRINGA, True)
end sub
Public disposedValue As Boolean = False ' To detect redundant calls
' IDisposable
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
InternalLOG.mLog.Debug("dispose ")
If Not Me.disposedValue Then
If disposing Then
' TODO: free managed resources when explicitly called
If Not STRINGA="" Then
SCRIVI(STRINGA)
End If
STRINGA = ""
End If
End If
Me.disposedValue = True
End Sub
#Region " IDisposable Support "
' This code added by Visual Basic to correctly implement the disposable pattern.
Public Sub Dispose() Implements IDisposable.Dispose
' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Public Property EnableDebug() As Boolean
Get
Return mEbableDebug
End Get
Set(ByVal value As Boolean)
mEbableDebug = value
End Set
End Property
#End Region
Protected Overrides Sub Finalize()
InternalLOG.mLog.Debug("Finalize ")
Dispose(True)
MyBase.Finalize()
End Sub
End Class
******************************************************************************
problema
io ho bisogno che la DDLSCRIVI scriva sempre cio' che ha valorizzato dentro STRINGA:
se lo script non fa errori come ultima istruzione chiama il DDLSCRIVI.dispose e tutto e' ok....
domanda: se lo script da in errore ( dove ho scritto 'possibile errore) io devo far si DDLSCRIVI che scriva comunque anceh se non viene chiamato il dispose:
il finalize della mia DDLSCRIVI viene chiamato dal GC quando entra in esecuzione x cui riesce a scrivere?????????
grazie 1000
Torna su
Stanze Forum
Elenco Threads
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 !