我有一个使用C ++库的.net应用程序。在应用程序中,您可以运行多个作业,每个作业使用C ++库进行一些计算。问题是,C ++对象在作业之间共享,我想避免它。我能想到的唯一方法是将每个任务作为一个单独的进程运行。有没有更好的方法呢?喜欢在不同的范围内运行
答案 0 :(得分:1)
答案是是,但这并不容易。
AppDomain不为本机代码提供隔离,因此您无法将其用于您的目标。每个进程加载一次非托管dll,而不是每个AppDomain加载一次。
您可以使用WinAPI LoadLibrary()
函数多次手动加载库。加载库的每个副本都可以在具有安全线程上下文的单独线程中使用。 Here描述了如何从动态加载的库中调用函数。不要忘记致电FreeLibrary()
来释放资源。