Condividi tramite


ServicedComponent Classe

Definizione

Rappresenta la classe base di tutte le classi che utilizzano i servizi COM+.

public ref class ServicedComponent abstract : ContextBoundObject, IDisposable, System::EnterpriseServices::IRemoteDispatch, System::EnterpriseServices::IServicedComponentInfo
[System.Serializable]
public abstract class ServicedComponent : ContextBoundObject, IDisposable, System.EnterpriseServices.IRemoteDispatch, System.EnterpriseServices.IServicedComponentInfo
[<System.Serializable>]
type ServicedComponent = class
    inherit ContextBoundObject
    interface IRemoteDispatch
    interface IDisposable
    interface IServicedComponentInfo
Public MustInherit Class ServicedComponent
Inherits ContextBoundObject
Implements IDisposable, IRemoteDispatch, IServicedComponentInfo
Ereditarietà
Derivato
Attributi
Implementazioni

Esempio

Nell'esempio di codice seguente viene illustrato come esporre una classe come componente COM configurato.


[assembly:ApplicationName("Calculator")];
[assembly:ApplicationActivation(ActivationOption::Library)];
[assembly:System::Reflection::AssemblyKeyFile("Calculator.snk")];
public ref class Calculator: public ServicedComponent
{
public:
   int Add( int x, int y )
   {
      return (x + y);
   }

};
using System;
using System.EnterpriseServices;

[assembly: ApplicationName("Calculator")]
[assembly: ApplicationActivation(ActivationOption.Library)]
[assembly: System.Reflection.AssemblyKeyFile("Calculator.snk")]
public class Calculator : ServicedComponent
{
    public int Add (int x, int y)
    {
        return(x+y);
    }
}

Per distribuire questa classe come componente COM configurato, è necessario generare una chiave complessa, compilare la classe come libreria e registrare la libreria. Questi tre passaggi vengono eseguiti dai tre comandi seguenti.

sn -k Calculator.snk  
csc /t:library Calculator.cs  
regsvcs Calculator.dll  

Commenti

In determinate condizioni, una classe derivata da ServicedComponent che viene eseguita in un'applicazione COM+ può smettere di rispondere. Questo problema è causato da un deadlock dell'attività. Le attività possono essere deadlock nelle applicazioni multithreading a causa di una pulizia asincrona dei riferimenti ai componenti. Per risolvere questo problema, chiamare il Dispose metodo quando si completa il lavoro con gli oggetti derivati da ServicedComponent.

Nota

Il codice client deve chiamare Dispose sui componenti serviti per garantire il corretto funzionamento.

Costruttori

ServicedComponent()

Inizializza una nuova istanza della classe ServicedComponent.

Metodi

Activate()

Metodo chiamato dall’infrastruttura quando l’oggetto viene creato o allocato da un pool. Sottoporre a override il metodo per aggiungere codice di inizializzazione personalizzato agli oggetti.

CanBePooled()

Questo metodo viene chiamato dall’infrastruttura prima che l’oggetto sia inserito nuovamente nel pool. Sottoporre a override il metodo per determinare il reinserimento dell'oggetto nel pool.

Construct(String)

Metodo chiamato dall'infrastruttura subito dopo la chiamata al costruttore, passando la stringa del costruttore. Sottoporre a override il metodo per utilizzare il valore della stringa del costruttore.

CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Deactivate()

Metodo chiamato dall’infrastruttura quando l’oggetto sta per essere disattivato. Sottoporre a override il metodo per aggiungere codice di completamento personalizzato agli oggetti quando si utilizza codice compilato JIT o il pool di oggetti.

Dispose()

Rilascia tutte le risorse usate da ServicedComponent.

Dispose(Boolean)

Rilascia le risorse non gestite usate da ServicedComponent e, facoltativamente, le risorse gestite.

DisposeObject(ServicedComponent)

Consente di completare l'oggetto e di rimuovere il riferimento a COM+ associato.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetLifetimeService()
Obsoleti.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()
Obsoleti.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IRemoteDispatch.RemoteDispatchAutoDone(String)

Questa API supporta l'infrastruttura del prodotto e non è previsto che venga usata direttamente dal codice.

Garantisce che, nel contesto COM+, il bit done dell'oggetto della classe ServicedComponent sia impostato su true dopo una chiamata a un metodo remoto.

IRemoteDispatch.RemoteDispatchNotAutoDone(String)

Non garantisce che, nel contesto COM+, il bit done dell'oggetto della classe ServicedComponent sia impostato su true dopo una chiamata a un metodo remoto.

IServicedComponentInfo.GetComponentInfo(Int32, String[])

Ottiene alcune informazioni sull'istanza della classe ServicedComponent.

Si applica a