Синглтон обслуживаемый компонент

Я пытаюсь реализовать обслуживаемый компонент как синглтон. В настоящее время мой код выглядит так:

[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. Он отображается в консоли служб компонентов и выглядит нормально. Однако, когда я создаю его экземпляр в разных приложениях, я не получаю один и тот же экземпляр. Какие-нибудь мысли?

1 ответ

Решение

Понял! Я получаю исключение активации, потому что я не освобождаю (.Dispose(), = null) экземпляр, который у меня был, поэтому другие процессы не могли получить ссылку на него.

Другие вопросы по тегам