79 messaggi dal 05 aprile 2005
ciao a tutti, avrei un problema...
ho una dll istallata con 2 metodi publici (PRENDI il parametro e il dispose) e uno privato nel dispose (SCRIVI) che scrive in file di log... per forza di cose devo usare la DLL 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

#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
Modificato da andreapavia il 20 aprile 2009 16.05 -
Credo che non impostando a null la variabile javascript, l'oggetto non venga rilasciato e quindi il GC non può farne il dispose.
Puoi però usare try/finally anche in javascript (spero ci sia anche vbscript) così sei sicuro che venga chiamato.

Ciao

Il mio blog
Homepage
79 messaggi dal 05 aprile 2005
 in vbs non hai il try catch finally....

ma sono gli errori li gestuico altrove....se c'e' un errore a me torna semplcemente un false... il vbs fa la exit sub.... il problema e' che quando fa la exit sub la dll COM deve morire e io quando sta tirando l'ultimo respiro devo farle fare qualcosa....

il mio problema e' "beccare" l'evento che uccide la dll COM..... ho implementato l'interfaccia idisposable... ho profato col finalize.... ho provato ad associare un evento alla process exit....

niente.... io vorrei solo capire che evento-metodo-sub-function dice che la dll COM sta per essere uccisa....

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.