Я узнал, как ответить на этот вопрос.Метод ReleaseAndDisposeAllHttpScopedObjects()
, предоставляемый ObjectFactory, действительно касается HttpContext и, следовательно, веб-приложений.
Класс HybridLifeCycle из пространства имен Structuremap.Pipeline позволяет напрямую обращаться к кэшированным объектам в хранилище ThreadLocal и распоряжаться ими.Вот пример:
Action.For<IUnitOfWork>().HybridHttpOrThreadLocalScoped().Use<UnitOfWork>();
Выше код регистрирует предоставленный тип и кэширует его экземпляры в HttpContext или хранилище ThreadLocal.Всегда полезно наследовать эти типы от IDisposable.Таким образом, в этом примере UnitOfWork также является IDisposable.
new HybridLifecycle().FindCache().DisposeAndClear();
Теперь для удаления кэшированных объектов независимо от веб-приложения или службы Windows, приведенной выше строки достаточно для удаления UnitOfWork вместо метода ReleaseAndDisposeAllHttpScopedObjects()
.Надеюсь, это кому-нибудь поможет.