V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
abczise
V2EX  ›  问与答

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

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

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

    一般用 这个 https://docs.microsoft.com/zh-cn/dotnet/standard/io/memory-mapped-files
    0TSH60F7J2rVkg8t
        2
    0TSH60F7J2rVkg8t  
       2019-12-29 19:44:52 +08:00 via iPhone
    named pipe
    xupefei
        3
    xupefei  
       2019-12-29 19:55:18 +08:00 via iPhone
    GC.KeepAlive
    wnpllrzodiac
        4
    wnpllrzodiac  
       2019-12-30 08:35:01 +08:00 via Android
    com 组件?
    AdamJin
        5
    AdamJin  
       2019-12-30 09:55:28 +08:00
    GCHandle?
    abczise
        6
    abczise  
    OP
       2019-12-30 20:43:19 +08:00
    @xupefei 谢了,解决了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2845 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:12 · PVG 15:12 · LAX 23:12 · JFK 02:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.