c#多线程访问同一个dll(delphi写的动态连接库)接口数据冲突干扰导致dll返回数据不对

问题描述

我代码情况是这样的A按扭创了一组多线程B按钮创建了一组多线程A与B同时访问这个dll接口数据冲突干扰导致dll返回数据不对

解决方案

本帖最后由 yyy520 于 2015-12-02 14:05:54 编辑
解决方案二:
既然要锁住,那还创建线程干什么,直接顺序读取不就完了
解决方案三:
头像太性感
解决方案四:
引用楼主yyy520的回复:

我代码情况是这样的A按扭创了一组多线程B按钮创建了一组多线程A与B同时访问这个dll接口数据冲突干扰导致dll返回数据不对

嗯,可以理解。#1楼把多种解决方案都说到了。
解决方案五:
引用1楼xdashewan的回复:

既然要锁住,那还创建线程干什么,直接顺序读取不就完了

好吧,突然发现一个不严谨的地方。其实是只需要一个线程去顺序读取,而不是去创建一“组”线程。创建一个线程还是有必要的,因为可以避免在主线程上执行繁重的读取,让主线程可以进行其他操作
解决方案六:
dll非线程安全,要使用多线程就需要调用方自己加上锁

时间: 2024-09-30 15:11:36

c#多线程访问同一个dll(delphi写的动态连接库)接口数据冲突干扰导致dll返回数据不对的相关文章

c++-我想写一个类动态连接库

问题描述 我想写一个类动态连接库 怎么写c++类动态连接库,就是导出一个类.然后写一个控制台程序调用出来. 解决方案 写完之后你把它编译成dll就行了,放在其他项目里直接引用 解决方案二: 在需要导出的类声明前面加上 declspec(dllexport)就可以导出到dll中了. 在另外一个工程使用该类的时候,需要在类名前加上declspec(dllimport)用来导入. 解决方案三: http://www.cnblogs.com/cswuyg/archive/2011/10/06/DLL2.

c++调用matlab生成的Dll动态连接库

点击打开链接http://download.csdn.net/detail/nuptboyzhb/4228429 c++调用matlab生成的Dll动态连接库 实验平台:   matlab 7.0(R2009a)   VC++6.0思路:1. 设置matlab的编译器,使用外部的VC或者gcc等编译器. 2. 编译m文件成dll 3. 设置VC的Include路径和lib链接库的路径 4. 编写C++调用dll步骤:1.    设置matlab的编译器在命令行窗口下,输入并执行如下命令:mex

Windows Api学习笔记-动态连接库(DLL)的使用

#include <windows.h> #include <iostream> #include "12dll.h" using namespace std; #pragma comment(lib,"12Dll")//要链接到什么库文件 void main() { //CMy12Dll a; cout<<fnMy12Dll()<<endl; char b; cin>>b; } VS2008 新建WIN3

Oralce 调用Delphi写DLL去访问C# WebService的问题

web|访问|问题 我想从Oracle的存储过程通过一个外部dll(Delphi编写)去访问C#写的WebService时,出现了"尚未调用 CoInitialize"不知道是怎么回事,望各位指点一二.1.我在Oracle里写了一个函数AddNumber如下:CREATE OR REPLACE FUNCTION "MY"."ADD" (a in BINARY_INTEGER,b in BINARY_INTEGER) RETURN BINARY_I

java调用delphi写的DLL报错误签名错

问题描述 如题,但并不是每次都报错,只是偶尔.函数参数我只有两个,都是字符串类型:Java这边我定义为string类型,delphi的dll里我定义为widestring类型错误显示为:错误签名AppName:javaw.exeAppVer:6.0.160.1ModName:adsloc32.dllModVer:5.60.0.0Offset:00030b00我写的delphidll里面调用了adsloc32.dll.补充:我用的开发工具是eclipse,delphi3写的DLL. 解决方案 解决

求助 需要写一个WCF的服务接口用来访问数据库,报文用XML的结果,哪位能给个例程或者提供个思路呢,不甚感激,我原来的应该程序时用delphi写的。

问题描述 求助需要写一个WCF的服务接口用来访问数据库,报文用XML的结果,哪位能给个例程或者提供个思路呢,不甚感激,我原来的应该程序时用delphi写的,现在需要写一个接口给第三方查询数据库用,请各位大虾帮帮忙 解决方案 解决方案二:在线等待中,谢谢各位解决方案三:请问你做什么系统的?我做税控需要这东东,正想研究wcf呢!

C#如何调用一个DELPHI写的dll

问题描述 兄弟们我有个问题请教一下:我用C#调用一个DELPHI写的dll,dll中有integer,pchar,single数据类型,integer和single类型都能读出来就是读pchar类型有问题,这个函数是个读卡函数,调用会报这个错"对PInvoke函数"WindowsApplication1!WindowsApplication1.mz_读医保卡::Freadcard"的调用导致堆栈不对称.原因可能是托管的PInvoke签名与非托管的目标签名不匹配.请检查PInv

请教多线程操作同一个数据表时,怎么避免表死锁

问题描述 最近有一个数据采集的项目,要求可以多路并发,遇到多线程操作同一个数据表的问题,经常发生表死锁,求各位大侠帮忙,大约有20-40个进程实例化读取类,类中Receive方法接收数据并存储上代码publicclassclsTranslateObj{privatevoidReceive(){intlenReceive=0;byte[]receivedByte=newbyte[BUFFER_SIZE];//接收返回字节数组_rtnStr=string.Empty;while(_flgConnec

多线程 java 同步 锁-java中多线程访问同步问题

问题描述 java中多线程访问同步问题 public class SyschronizedSample{ private int value; public synchronized int get(){ return value;} public synchronized void set(int value) { this.value=value; } } 以上的代码中,要使得访问value时具有线程安全,所以在set和get方法中都加了synchronized同步语句,如果只在set方法前