abczise
V2EX  ›  问与答

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

  •  
  •   abczise · Dec 29, 2019 · 2357 views
    This topic created in 2500 days ago, the information mentioned may be changed or developed.
    我想让一个 DLL 变成一个本地内存的 API,好让其他 DLL 直接调用他,从而进行跟 EXE 之间的通信。
    我用的是 C#,采用的方法是共享函数指针的方法。将 exe 中的函数指针共享给 DLL1,其他 DLL 调用 DLL1 中预先公开的函数,那么就达到了其他 DLL 与 EXE 之间的通信问题。
    但是中间存在一个弊端,就是函数指针的生命期好像特别短,调用完毕就直接给回收了。
    采用循环让他保持生命期呢,但是有时候也不行。
    请问各位大神有没有其他好的点子?
    共享内存的方法可以呢,但是我需要 EXE 与 DLL 都是双向通信。
    6 replies  •  2019-12-30 20:43:19 +08:00
    sx90
    sx90
    Dec 29, 2019
    1
    不懂

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

    一般用 这个 https://docs.microsoft.com/zh-cn/dotnet/standard/io/memory-mapped-files
    0TSH60F7J2rVkg8t
    0TSH60F7J2rVkg8t
    Dec 29, 2019 via iPhone
    2
    named pipe
    xupefei
    xupefei
    Dec 29, 2019 via iPhone
    3
    GC.KeepAlive
    wnpllrzodiac
    wnpllrzodiac
    Dec 30, 2019 via Android
    4
    com 组件?
    AdamJin
    AdamJin
    Dec 30, 2019
    5
    GCHandle?
    abczise
    abczise
    OP
    Dec 30, 2019
    6
    @xupefei 谢了,解决了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1485 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 23:22 · PVG 07:22 · LAX 15:22 · JFK 18:22
    ♥ Do have faith in what you're doing.