用C#编写DLL文件,如何设置共享数据?

magiclee 2002-12-08 04:02:45
在C++中可用#pragma data_seg来设置,请问C#中应该怎么设?
...全文
449 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
magiclee 2002-12-14
  • 打赏
  • 举报
回复
niwalker()兄:
你可能还是没有看明白我的问题,我再详述一下吧。

(假设有程序A和程序B,它们运行后都会调用同一个DLL文件test.dll)
我要写这样一个DLL(test.dll),里面有一个变量var1(假设初始值为5),我想要把这个变量设成是进程间共享的变量,也就是说当程序A调用这个DLL时,给变量赋了值100,这时程序B调用这个DLL时,能读出var1中的值是100(而不是读出5);当程序B给DLL中的var1赋值200后,程序A能读出var1=200

请问在用C#编译的DLL文件中,这个变量var1应该怎么声明?

(注:声明成static型是不行的,因为程序A和程序B在调用test.dll时,都会复制一份数据过去(Win32调用DLL的机制),也就是说DLL中的数据对每个进程来说都是独立的!)

再次谢谢你的帮助! ;-)
magiclee 2002-12-14
  • 打赏
  • 举报
回复
up
magiclee 2002-12-11
  • 打赏
  • 举报
回复
大家看是不是用Marshal类可以解决,我在翻资料……请大家帮忙试一试;)
magiclee 2002-12-11
  • 打赏
  • 举报
回复
编译好DLL文件后,很多程序都可以调用这个DLL。
每个调用的进程都会把DLL的数据复制一份过去(Win32调用DLL的机制),但如果要在每个调用的进程间共享DLL中的一个变量,该怎么做?
niwalker 2002-12-11
  • 打赏
  • 举报
回复
噢,sorry,没有看仔细,你可以使用Singleton模式。
http://www.csdn.net/Develop/read_article.asp?id=14161
magiclee 2002-12-11
  • 打赏
  • 举报
回复
不行!
我已经说过了,每个调用的进程会把这个static变量复制一份过去,因为DLL中的数据对每个进程来说都是独立的。我不知道怎么声明一个变量可以在所有调用这个DLL的进程间共享!
niwalker 2002-12-11
  • 打赏
  • 举报
回复
C#中的变量都必须依附在一个类中,你可以把这个共享的变量声明为static,就可以了。
huan_jinwu 2002-12-10
  • 打赏
  • 举报
回复
up
lkal4587 2002-12-10
  • 打赏
  • 举报
回复
我一直在用C#写DLL

可是~~~~~~~~~~

请把你的问题说清楚点

或把代码贴出来
magiclee 2002-12-09
  • 打赏
  • 举报
回复
这么说C#岂不是做不成全局的Hook了???
Lostinet 2002-12-09
  • 打赏
  • 举报
回复
dotNet同一程序集的不同实例是不能直接通过共用内存来共享数据的。
用C++做一个包容共享数据的组件来给C#调用.
aiddy 2002-12-08
  • 打赏
  • 举报
回复
关注
wordinchina 2002-12-08
  • 打赏
  • 举报
回复
关注
Brunhild 2002-12-08
  • 打赏
  • 举报
回复
gz
CHReich 2002-12-08
  • 打赏
  • 举报
回复
我也想知道~

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧