C# 我是否应该关心在ASP.NET控制器中处理静态实例?
假设我有以下ASP.NET webapi控制器:C# 我是否应该关心在ASP.NET控制器中处理静态实例?,c#,asp.net,.net,dispose,C#,Asp.net,.net,Dispose,假设我有以下ASP.NET webapi控制器: [RoutePrefix("api/Foo")] public sealed class FooController : ApiController { private static readonly NativeFooService _nativeFooService = new NativeFooService(); // Controller actions } NativeFooService实现了IDisposabl
[RoutePrefix("api/Foo")]
public sealed class FooController : ApiController
{
private static readonly NativeFooService _nativeFooService = new NativeFooService();
// Controller actions
}
NativeFooService
实现了IDisposable
,并且在构造函数中包含了一些繁重的初始化代码,所以我真的不想让它成为控制器的非静态成员,但同时我想调用它,确保它被正确释放,因为它正在包装一些本机组件
问题是,我是否应该关心使用类似的方法调用
NativeFooService
上的Dispose
,还是应该将所有问题留给ASP.Net运行时?这毫无意义。要么是静态的,要么不是。它怎么可能是静态的-保持活动状态,线程安全-然后需要定期处理?为什么不把它放在需要的地方。可能会有帮助。我同意@TomTom。我不知道NativeFooService初始化是如何实现的。我会想办法使这项任务更轻松、更快。如果不可能这样做,那么可以尝试在ASP.NET AppPool循环中处理实例化和处置?这样一来,用户就不会在AppPool在回收后第一次收到请求时体验到很长的加载时间。我想,NativeFooService
上的终结器已经实现,并且正在以闪电般的速度工作以避免任何杀戮超时?相关主题: