Синглтон обслуживаемый компонент
Я пытаюсь реализовать обслуживаемый компонент как синглтон. В настоящее время мой код выглядит так:
[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) экземпляр, который у меня был, поэтому другие процессы не могли получить ссылку на него.