Dispose e finalize con garbage collector

lunedì 20 aprile 2009 - 15.57

andreapavia Profilo | Senior Member

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

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