如何为每个请求缓存 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 中指定的资源池。