0

抱歉标题,如果你有更好的,请随时更新。

基本上,我正在使用 ASP.Net Web API 编写一个 Web api。我已经像这样配置了一个 Unity 容器:

string xmlFilePath = "some/path"

var unity = new UnityContainer();
unity.RegisterType<PlayerController>();
unity.RegisterType<IRepository, XmlRepository>(
    new ContainerControlledLifetimeManager(),
    new InjectionConstructor(xmlFilePath));
config.DependencyResolver = new IoCContainer(unity);

XmlRepository 中有一些对象代表 xml 文件的状态,还有一个计时器,每 60 秒将状态写入 xml 文件。这是为了避免每次状态更改时都必须重写 xml 文件,同时将可能丢失的状态更改的最大时间限制为 60 秒。

我的问题是这个.. 统一容器创建了一个 XmlRepository 的单例,我的 Web api 在每次调用时都可以使用它。但是,调用之间的对象会发生什么?它是在某个地方以某种序列化的形式出现,还是保持原来的形式,所以我的计时器将继续工作?

4

1 回答 1

4

单例对象留在内存中。在您的情况下,它将由 Unity 容器管理。它不会被序列化,如果您在其上启动了一些计时器,它们将继续工作......直到 IIS 决定回收您的 AppDomain。现在去阅读在 ASP.NET 中实现重复后台任务的危险

于 2012-12-15T17:55:19.200 回答