我正在使用来自网络服务的 COM dll。 添加 COM dll 作为引用。我在 Global.asax 中将该对象声明为静态的。 我正在 Application_Start 中创建 COM 对象。
我必须在每个请求中调用 COM dll 接口(interface)函数。 我在这里遇到异常,因为内存损坏。我可以看到同时请求出现时发生的日志。 请让我知道最好的方法是什么。如何使其线程安全。?
最佳答案
尝试在每个请求中创建一个新实例并且不使用该对象的应用程序范围。
如果您在应用程序范围内访问它(例如通过 Application_Start),您将需要确保它对于多线程是安全的。我不知道 C++ dll 如何处理线程,但您可以在 asp.net 级别管理多线程。
例如,要管理一个简单的应用程序级计数器,代码如下:
Application.Lock();
Application["SomeGlobalCounter"] =
(int)Application["SomeGlobalCounter"] + 1;
Application.UnLock();
有关更多信息,您可能希望在 Application State 上查看 MSDN 页面.
关于c++ - 从 Webservice 访问 C++ COM dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6328571/