Share via


ServicedComponent-Klasse

Stellt die Basisklasse aller Klassen dar, die COM+-Dienste verwenden.

Namespace: System.EnterpriseServices
Assembly: System.EnterpriseServices (in system.enterpriseservices.dll)

Syntax

'Declaration
<SerializableAttribute> _
Public MustInherit Class ServicedComponent
    Inherits ContextBoundObject
    Implements IRemoteDispatch, IDisposable, IServicedComponentInfo
'Usage
Dim instance As ServicedComponent
[SerializableAttribute] 
public abstract class ServicedComponent : ContextBoundObject, IRemoteDispatch, IDisposable, IServicedComponentInfo
[SerializableAttribute] 
public ref class ServicedComponent abstract : public ContextBoundObject, IRemoteDispatch, IDisposable, IServicedComponentInfo
/** @attribute SerializableAttribute() */ 
public abstract class ServicedComponent extends ContextBoundObject implements IRemoteDispatch, IDisposable, 
    IServicedComponentInfo
SerializableAttribute 
public abstract class ServicedComponent extends ContextBoundObject implements IRemoteDispatch, IDisposable, 
    IServicedComponentInfo

Hinweise

Bestimmte Bedingungen können dazu führen, dass eine von ServicedComponent abgeleitete und in einer COM+-Anwendung ausgeführte Klasse nicht mehr reagiert. Dieses Problem wird von einem Aktivitätsdeadlock verursacht. Ein Aktivitätsdeadlock kann in Multithreadanwendungen auftreten, weil Komponentenverweise asynchron bereinigt werden. Um dieses Problem zu umgehen, rufen Sie die Dispose-Methode auf, wenn Sie ein von ServicedComponent abgeleitetes Objekt nicht mehr benötigen. Weitere Informationen finden Sie unter https://support.microsoft.com/default.aspx?scid=kb;en-us;327443.

Hinweis

Clientcode muss Dispose für Serviced Components aufrufen, um eine korrekte Ausführung sicherzustellen.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie eine Klasse als konfigurierte COM-Komponente verfügbar gemacht wird.

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);
    }
}
[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);
   }

};
import System.*;
import System.EnterpriseServices.*;

/** @assembly ApplicationName("Calculator")
 */
/** @assembly ApplicationActivation(ActivationOption.Library)
 */
/** @assembly System.Reflection.AssemblyKeyFile("Calculator.snk")
 */
public class Calculator extends ServicedComponent
{
    public int Add(int x, int y)
    {
        return x + y;
    } //Add
} //Calculator

Um diese Klasse als konfigurierte COM-Komponente bereitzustellen, müssen Sie einen starken Schlüssel generieren, die Klasse als Bibliothek kompilieren und die Bibliothek registrieren. Diese drei Schritte werden mit den folgenden drei Befehlen erzielt.

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

Vererbungshierarchie

System.Object
   System.MarshalByRefObject
     System.ContextBoundObject
      System.EnterpriseServices.ServicedComponent
         System.EnterpriseServices.CompensatingResourceManager.Compensator
         System.EnterpriseServices.RegistrationHelperTx

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

ServicedComponent-Member
System.EnterpriseServices-Namespace