问题描述
求助:我写了一个DLL,里面有一个方法。然后在应用种序中用以下方法动态加载该DLL,并调用里面的方法。TestParamtersparameters=(TestParamters)Parameters;stringDLLPath=Application.StartupPath+"\DLL\"+parameters.Wafer+".dll";AssemblyAss=Assembly.LoadFrom(DLLPath);TypeTestClass=Ass.GetType("AWQATESTER."+parameters.Wafer);objectTestClassInstance=Activator.CreateInstance(TestClass,newobject[]{parameters.UnitsNum});MethodInfomi=TestClass.GetMethod(parameters.Wafer+"Test");mi.Invoke(TestClassInstance,newobject[]{parameters.Voltages,parameters.Registers});这里是没问题的,但是问题出在,当我新建一个线程,在线程中去再去用同样的方法动态加载该DLL,并调用里面的方法,运行到mi.Invoke(TestClassInstance,newobject[]{parameters.Voltages,parameters.Registers});就会引发“cross-thread”异常。请问哪位大神有解决方法?
解决方案
解决方案二:
同一个进程中一个dll只会被加载一次,第二次加载只是计数器+1而已。猜测你这个大概可能就是跨线程调用界面之类的错误了。
解决方案三:
这种东西,你应该在每个线程里都实例化一个dll。而不是使用全局变量,所有的线程都使用一个dll。