使用AppDomains并行化非线程安全的DLL

dew*_*ald 7 .net c# parallel-processing pinvoke appdomain

我有一个非托管的C++ DLL,我的.NET应用程序通过p/invoke使用它.我需要从这个DLL的方法相当耗时,我想并行化方法调用.问题是它使用了一堆静态和全局变量,因此它不是线程安全的(并且不能更改).我的计划是通过并行调用多个AppDomain中的非托管DLL来克服这个非线程安全问题.

我可以从多个AppDomain中调用非托管代码而不会出现任何问题,只要我不并行执行,但只要我并行调用,我就会得到一个AccessViolationException.我正在使用Parallel.For()来进行并行调用.

是否可以通过简单地从多个AppDomain进行调用来使非线程安全的非托管DLL"线程安全"?

Jar*_*Par 7

从多个AppDomain实例调用本机方法对这里没有任何帮助. AppDomain边界不适用于本机DLL,它们不会提供任何好处