Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于解决全局变量问题的.Net包装器和内存空间 我有一个C++调用的DLL,它是通过调用应用程序从LoadLibray调用的。它被交给一个窗口,预计将在该窗口中运行。在单窗口环境中(即为下一个用户和/或窗口卸载DLL),一切正常。然而,我发现当我们被递给多个窗口时,麻烦就发生了_.net_Memory Management_Dll - Fatal编程技术网

用于解决全局变量问题的.Net包装器和内存空间 我有一个C++调用的DLL,它是通过调用应用程序从LoadLibray调用的。它被交给一个窗口,预计将在该窗口中运行。在单窗口环境中(即为下一个用户和/或窗口卸载DLL),一切正常。然而,我发现当我们被递给多个窗口时,麻烦就发生了

用于解决全局变量问题的.Net包装器和内存空间 我有一个C++调用的DLL,它是通过调用应用程序从LoadLibray调用的。它被交给一个窗口,预计将在该窗口中运行。在单窗口环境中(即为下一个用户和/或窗口卸载DLL),一切正常。然而,我发现当我们被递给多个窗口时,麻烦就发生了,.net,memory-management,dll,.net,Memory Management,Dll,我相信这些问题是由于我们很草率,并且有相当多的全局数据(即extern,或者declares在类之外),当然,当切换窗口时,并不是所有的数据都被正确更新,并且会“混淆” 一种解决方案可能是包装所有全局数据并将其分配给“窗口”,然后在激活特定窗口时,指针将指向该数据块。然而,我认为这是一项巨大的编码工作 我想知道的另一个解决方案(最后是问题:-)是,我们是否可以包装DLL,使其成为一个.NET对象,为每个需要的窗口实例化 问题是,这样做是否可以使每个实例完全独立于其他实例,从而消除全局变量带来的问

我相信这些问题是由于我们很草率,并且有相当多的全局数据(即
extern
,或者
declare
s在类之外),当然,当切换窗口时,并不是所有的数据都被正确更新,并且会“混淆”

一种解决方案可能是包装所有全局数据并将其分配给“窗口”,然后在激活特定窗口时,指针将指向该数据块。然而,我认为这是一项巨大的编码工作

我想知道的另一个解决方案(最后是问题:-)是,我们是否可以包装DLL,使其成为一个.NET对象,为每个需要的窗口实例化


问题是,这样做是否可以使每个实例完全独立于其他实例,从而消除全局变量带来的问题?

如果多个窗口位于不同的线程上,您可以使用线程本地数据。您可能无法做到这一点。DLL中的全局变量是为每个进程分配的。因此,除非您希望复制同一DLL的多个副本(使用不同的名称),否则无法获取多个全局数据副本。