从Web服务访问C ++ COM dll

| 我正在使用来自Web服务的COM dll。 COM dll被添加为参考。我在Global.asax中将对象声明为静态。 我在Application_Start中创建COM对象。 我必须在每个请求中调用COM dll接口函数。 我在这里遇到异常,例如内存损坏。我可以看到在同时请求出现时发生的日志。 请让我知道最好的方法是什么。如何使其线程安全。     
已邀请:
        尝试在每个请求中创建一个新实例,而不使用该对象的应用程序范围。 如果要在应用程序范围内(例如通过Application_Start)访问它,则需要确保它对多线程安全。我不知道C ++ dll如何处理线程,但是您可能能够在asp.net级别管理多线程。 例如,要管理一个简单的应用程序级别计数器,代码如下:
Application.Lock();
Application[\"SomeGlobalCounter\"] =
   (int)Application[\"SomeGlobalCounter\"] + 1;
Application.UnLock();
有关更多信息,您可能希望在“应用程序状态”上查看MSDN页面。     
        如果COM对象是单元线程,则COM提供同步以强制每个线程执行一个方法。 通常,尽管如此,COM应该抱怨多个线程试图使用跨线程共享的同一指针来访问对象的实例。使用静态变量持有指向该对象的指针可能是一个坏主意。 通过创建实例将COM对象共享库加载到某个地方(进程内或进程外)后,每个线程创建其他实例的速度应该很快。当然,这取决于对象构建过程中正在执行的操作类型。     

要回复问题请先登录注册