单例服务组件
Singleton Serviced Component
我正在尝试将服务组件实现为单例。
目前,我的代码是这样的:
[assembly: ApplicationName("SingletonServicedComponent")]
[assembly: ApplicationActivation(ActivationOption.Server)]
[assembly: ApplicationAccessControl(false)]
[ComVisible(true)]
[JustInTimeActivation(true)]
[ComponentAccessControl(false)]
[ProgId("Singleton.ServicedComponent")]
[ObjectPooling(Enabled = true, MaxPoolSize = 1, MinPoolSize = 1, CreationTimeout = 5000)]
public sealed class SingletonServicedComponent : System.EnterpriseServices.ServicedComponent
{
private int value = 0;
protected override bool CanBePooled()
{
return true;
}
public int Increment()
{
return this.value++;
}
}
我遵循将其合并的模式,最小和最大实例计数为 1。
我签署了我的程序集并使用 regasm 和 regsvcs 注册了它。它出现在组件服务控制台中,并且看起来没问题。
但是,当我在不同的应用程序中实例化它时,我似乎没有得到相同的实例。
有什么想法吗?
知道了!
我收到一个激活异常,因为我没有释放 (.Dispose(), = null) 我拥有的实例,所以其他进程无法获取对它的引用。
我正在尝试将服务组件实现为单例。 目前,我的代码是这样的:
[assembly: ApplicationName("SingletonServicedComponent")]
[assembly: ApplicationActivation(ActivationOption.Server)]
[assembly: ApplicationAccessControl(false)]
[ComVisible(true)]
[JustInTimeActivation(true)]
[ComponentAccessControl(false)]
[ProgId("Singleton.ServicedComponent")]
[ObjectPooling(Enabled = true, MaxPoolSize = 1, MinPoolSize = 1, CreationTimeout = 5000)]
public sealed class SingletonServicedComponent : System.EnterpriseServices.ServicedComponent
{
private int value = 0;
protected override bool CanBePooled()
{
return true;
}
public int Increment()
{
return this.value++;
}
}
我遵循将其合并的模式,最小和最大实例计数为 1。 我签署了我的程序集并使用 regasm 和 regsvcs 注册了它。它出现在组件服务控制台中,并且看起来没问题。 但是,当我在不同的应用程序中实例化它时,我似乎没有得到相同的实例。 有什么想法吗?
知道了! 我收到一个激活异常,因为我没有释放 (.Dispose(), = null) 我拥有的实例,所以其他进程无法获取对它的引用。