多线程中加载DLL

问题描述

求助:我写了一个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。

时间: 2024-08-04 11:43:29

多线程中加载DLL的相关文章

Lua5.1中加载dll动态链接库的方法

  这篇文章主要介绍了Lua5.1中加载dll动态链接库的方法,本文讲解了加载专门为lua写的扩展dll的方法和加载不是专为lua写的扩展dll的方法,需要的朋友可以参考下 一.加载专门为lua写的扩展dll 使用require或package.loadlib方法,在此不做过多解释. 二.加载不是专为lua写的扩展dll "不是专为lua写的扩展dll"是指:dll中并没有以lua注册函数的方式导出接口,而是以__declspec(dllexport)形式导出的接口.这样就不能使用&q

关于TOMCAT 中加载DLL的问题

问题描述 最近在一个WEB程序中,使用了JNI相关技术,写了一个DLL文件(用VS2008+C写的),这个DLL在我的MyEclipse中测试通过,通过的过程,我没有增加其他的DLL作为它的依赖项的...但当我把它移动到WEB程序中时,它就老是报出"javax.servlet.UnavailableException:C:tomcat-6.0.32binJNITest.dll:Can'tfinddependentlibraries"这里DLL应该是加载成功了,但是说没有找到依赖项请问,

Lua5.1中加载dll动态链接库的方法_Lua

一.加载专门为lua写的扩展dll     使用require或package.loadlib方法,在此不做过多解释. 二.加载不是专为lua写的扩展dll     "不是专为lua写的扩展dll"是指:dll中并没有以lua注册函数的方式导出接口,而是以__declspec(dllexport)形式导出的接口.这样就不能使用"package.loadlib"方法调用,而要使用lua5.1封装过的"alien.load()"方法.(Lua\5.1

java中Web Project中加载dll文件的终极解决方案

1.首先把要加载的dll文件拷贝到Web Project的src目录下 2.声明一个TestDLL类,名字请根据实际命名  代码如下 复制代码 package com.anllin.jni; public class TestDLL {     public TestDLL(String... filenames)     {         // 取得src下的物理路径,         String path = TestDLL.class.getResource("/").get

解析Java和Eclipse中加载本地库(.dll文件)的详细说明_java

最近在做的工作要用到本地方法,需要在Java中加载不少动态链接库(以下为方便延用Windows平台下的简写dll,但并不局限于Windows).刚刚把程序跑通,赶紧把一些心得写出来,mark.也希望对大家的类似工作有所帮助首先,应当明确,dll有两类:(1)Java所依赖的dll和,(2)dll所依赖的dll.正是由于第(2)种dll的存在,才导致了java中加载dll的复杂性大大增加,许多说法都是这样的,但我实验的结果却表明似乎没有那么复杂,后面会予以详细阐述.其次,Java中加载dll的方式

java 加载dll介绍(转)

最近在做的工作要用到本地方法,需要在Java中加载不少动态链接库(以下为方便延用Windows平台下的简写dll,但并不局限于Windows).刚刚把程序跑通,赶紧把一些心得写出来,mark.也希望对大家的类似工作有所帮助  首先,应当明确,dll有两类:(1)Java所依赖的dll和,(2)dll所依赖的dll.正是由于第(2)种dll的存在,才导致了java中加载dll的复杂性大大增加,许多说法都是这样的,但我实验的结果却表明似乎没有那么复杂,后面会予以详细阐述.  其次,Java中加载dl

C#中如何动态加载Dll

1.新建测试dll及方法,用vs2010新建winform程序,具体代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace reflect { public

javascript-Qt加载dll文件后在JavaScript中无法使用

问题描述 Qt加载dll文件后在JavaScript中无法使用 实现目的:在Qt加载dll文件,dl文件实现提示框功能,dll文件的类为Operator,加载后作用js的一个属性被js使用. 问题:在js中就不能成功调用,并提示: Uncaught exception at :/test.js:6: TypeError: Result of expression 'Operator.prompt' [undefined] is not a function. 尝试在main.cpp中调用这个类的

visual studio-vs2013中加载自定义的dll文件失败,怎么解决啊

问题描述 vs2013中加载自定义的dll文件失败,怎么解决啊 解决方案 先把这个dll复制到system32或者exe相同目录下. 解决方案二: 你的DLL需要放到exe目录下.在实例中,需要放到动态库调用测试.exe目录下. 解决方案三: 你这个依赖的dll socketclientzp.dll找不到