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