| 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 |
| 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] |
| 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 |
| 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 |
| 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] |