我似乎無法找到一個答案,在文檔或計算器這個問題(雖然我可能忽略了它)。我很好奇,是否應該手動處理由ContainerBuilder提供的IContainer?Autofac - 我需要在MVC global.asax中手動處理IContainer嗎?
下面是Remember.Web一個代碼示例:
//etc..
IContainer container = builder.Build();//returns IDisposable instance
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
//etc..
,但我很好奇,如果它應該是這樣的:
public class MvcApplication : HttpApplication
{
private IContainer container;//not necessary..?
protected void Application_Start()
{
///etc..
this.container = builder.Build();//returns IDisposable instance
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
//etc..
}
protected void Application_End()
{
container.Dispose();
}
}
請你點我到正確的文檔,如果我俯視着東西,謝謝!
這是不完全正確。如果AppDomain死亡,運行時將運行所有仍需要最終確定的對象的所有終結器。所以這意味着任何非託管資源(文件句柄,db連接,對本機內存的引用,GDI +映像)都會被清除。但垃圾收集器不會爲您調用任何「Dispose」方法。因此,如果你在一個不在終結器中的dispose方法中做更多事情(例如對數據庫進行一些最終的記錄),那麼代碼將無法運行。 – Steven 2014-10-09 21:04:35
@Steven - 謝謝,你真是太棒了。我澄清了這一點。 – 2014-10-10 10:08:18