如何为每个请求缓存 COM 对象而不是 create/dispose?
How to cache COM Object to not create/dispose it for each request?
我有一个 asp.net web-api2
应用程序,它使用 COM object
与数据进行交互。
我有一个正在使用它的 Engine
对象。像这样:
public class PVXEngine : IDisposable
{
protected DispatchObject _pvxObject;
public PVXEngine()
{
_pvxObject = new DispatchObject("ProvideX.Script");
}
public void Dispose()
{
_pvxObject.Dispose();
}
}
我不想为每个请求重新创建此对象。如何将我的 PVXEngine
存储在我的应用程序上下文中而不重新创建它。 (我猜它会在应用程序池回收时被处理掉。)
此外,如果可能,请参考我的文档,我可以在其中阅读有关在应用程序池中缓存对象的信息。
感谢您的宝贵时间。
使 PVXEngine
成为 class 变量。 假定对象是线程安全的。
public class PVXEngine : IDisposable
{
static protected DispatchObject _pvxObject = new DispatchObject("ProvideX.Script");
}
如果对象不是线程安全的,那么我建议使用 C# Object Pooling Pattern implementation 中指定的资源池。
我有一个 asp.net web-api2
应用程序,它使用 COM object
与数据进行交互。
我有一个正在使用它的 Engine
对象。像这样:
public class PVXEngine : IDisposable
{
protected DispatchObject _pvxObject;
public PVXEngine()
{
_pvxObject = new DispatchObject("ProvideX.Script");
}
public void Dispose()
{
_pvxObject.Dispose();
}
}
我不想为每个请求重新创建此对象。如何将我的 PVXEngine
存储在我的应用程序上下文中而不重新创建它。 (我猜它会在应用程序池回收时被处理掉。)
此外,如果可能,请参考我的文档,我可以在其中阅读有关在应用程序池中缓存对象的信息。
感谢您的宝贵时间。
使 PVXEngine
成为 class 变量。 假定对象是线程安全的。
public class PVXEngine : IDisposable
{
static protected DispatchObject _pvxObject = new DispatchObject("ProvideX.Script");
}
如果对象不是线程安全的,那么我建议使用 C# Object Pooling Pattern implementation 中指定的资源池。