ServicedComponent 类

表示使用 COM+ 服务的所有类的基类。

**命名空间:**System.EnterpriseServices
**程序集:**System.EnterpriseServices(在 system.enterpriseservices.dll 中)

语法

声明
<SerializableAttribute> _
Public MustInherit Class ServicedComponent
    Inherits ContextBoundObject
    Implements IRemoteDispatch, IDisposable, IServicedComponentInfo
用法
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

备注

在某些条件下,从运行在 COM+ 应用程序中的 ServicedComponent 派生的类可能会停止响应。此问题是由“活动”死锁引起的。多线程应用程序中的活动会因异步清理组件引用而死锁。要解决此问题,请在使用从 ServicedComponent 派生的对象完成工作时,调用 Dispose 方法。有关更多信息,请参见 https://support.microsoft.com/default.aspx?scid=kb;en-us;327443

提示

客户端代码必须调用服务组件上的 Dispose,以确保正确操作。

示例

下面的代码示例演示如何将某个类公开为一个已配置 COM 组件。

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

要将此类部署为一个已配置的 COM 组件,必须生成一个强密钥,将此类作为一个库进行编译,然后注册该库。这三个步骤由下面的三个命令来完成。

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

继承层次结构

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

线程安全

此类型的任何公共静态(Visual Basic 中的 Shared)成员都是线程安全的,但不保证所有实例成员都是线程安全的。

平台

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 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

ServicedComponent 成员
System.EnterpriseServices 命名空间