大神们,请教一下关于内存通信的问题!

2019-12-29 17:15:05 +08:00
 abczise
我想让一个 DLL 变成一个本地内存的 API,好让其他 DLL 直接调用他,从而进行跟 EXE 之间的通信。
我用的是 C#,采用的方法是共享函数指针的方法。将 exe 中的函数指针共享给 DLL1,其他 DLL 调用 DLL1 中预先公开的函数,那么就达到了其他 DLL 与 EXE 之间的通信问题。
但是中间存在一个弊端,就是函数指针的生命期好像特别短,调用完毕就直接给回收了。
采用循环让他保持生命期呢,但是有时候也不行。
请问各位大神有没有其他好的点子?
共享内存的方法可以呢,但是我需要 EXE 与 DLL 都是双向通信。
1386 次点击
所在节点    问与答
6 条回复
sx90
2019-12-29 17:23:23 +08:00
不懂

大型数据,个人建议文件化;

一般用 这个 https://docs.microsoft.com/zh-cn/dotnet/standard/io/memory-mapped-files
ahhui
2019-12-29 19:44:52 +08:00
named pipe
xupefei
2019-12-29 19:55:18 +08:00
GC.KeepAlive
wnpllrzodiac
2019-12-30 08:35:01 +08:00
com 组件?
AdamJin
2019-12-30 09:55:28 +08:00
GCHandle?
abczise
2019-12-30 20:43:19 +08:00
@xupefei 谢了,解决了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/633340

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX