单例服务组件

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) 我拥有的实例,所以其他进程无法获取对它的引用。