Logo UGIdotNET

Discussione 'Dispose and JIT'

# Pubblicato il 14 feb 2003 18.40 - Rispondi
Alessandro Rizzi
Dispose and JIT
Ho la seguente situazione:
1 componente COM+ con livello transazionale NotSupported, con un metodo X[Autocomplete].
Se attivo il JIT e dopo aver chiamato il metodo X faccio la dispose dell'oggetto ottengo il seguente errore:
Cannot access a disposed object named "ServicedComponent"
L'errore non c'e' se disattivo il JIT.
Perche' se uso un'altro componente che ha Required come livello transazionale, e quindi anche il JIT attivato, non ottengo nessun errore?
Grazie per l'aiuto.
Alessandro Rizzi
# Pubblicato il 17 feb 2003 11.13 - Rispondi
Andrea Bini [MS]
Re: Dispose and JIT
Ho provato ma non riesco a riprodurre il tuo errore. Io ho usato la seguente classe:

[JustInTimeActivation(true)]
[Transaction(TransactionOption.NotSupported)]
public class JITClass : ServicedComponent
{
[AutoComplete]
public void X()
{
}
}

in una applicazione COM+ server. Il codice client è il seguente:

JITClass j = new JITClass();
j.X();
j.Dispose();

C'e' qualcosa di diverso dal tuo caso ? Puoi mandarci un esempio ?

Ciao
Andrea Bini [MS]
# Pubblicato il 18 feb 2003 16.01 - Rispondi
Alessandro Rizzi
Re: Dispose and JIT
L'unica differenza e' che il mio oggetto con Transazioni NotSupported non ha la riga [JustInTimeActivation(true)], e abilito il JIT dall'interfaccia di COM+.
Comunque allego l'esempio fatto da una DLL, con all'interno varie classi e l'exe client. Dal codice del client dovrebbe essere chiaro cosa viene chiamato
Ciao
Alessandro
# Pubblicato il 18 feb 2003 18.05 - Rispondi
Alessandro Rizzi
Re: Dispose and JIT
Confermo che il problema era dovuto alla modifica dell'attributo JIT direttamente da COM+.
Se si imposta in .Net non c'e' problema.
Grazie
# Pubblicato il 18 feb 2003 16.19 - Rispondi
Andrea Bini [MS]
Re: Dispose and JIT
Mi sa che il problema è proprio quello: gli attributi che imposti nel codice e quelli nel catalogo COM+ devono essere gli stessi.
Questo perchè il codice del proxy prende strade diverse a seconda degli attributi presenti nel codice .NET (ad esempio, nel tuo caso pensa che l'oggetto sia ancora attivato, perchè JITA e transazioni sono disabilitate), e se trova uno stato inconsistente lancia un'eccezione (nel tuo caso l'oggetto è stato invece disattivato da COM+ per effetto delle impostazioni della JITA nel catalogo)

Prova ad inserire l'attributo e dovrebbe andare a posto.

Ciao
Andrea Bini [MS]

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185