单例服务组件

本文关键字:组件 服务组 服务 单例 | 更新日期: 2023-09-27 18:11:59

我正在尝试将服务组件实现为单例。目前,我的代码是这样的:

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