我想从C应用程序向C#应用程序发送大量字符串(~250000)< 1sec。当我使用WM_COPYDATA和SendMessage时,我的C#应用程序挂起。我还可以做些什么?命名管道仅包含在.NET 4中,我使用的是.NET 2.
编辑: 我要坚持使用WM_COPYDATA并附加到列表(这是一个快速操作)。然后处理此列表。
答案 0 :(得分:5)
最快的选择可能是使用named pipes via P/Invoke。这仍然比大多数其他IPC选项高得多。
答案 1 :(得分:4)
共享内存或MMF是最快的方法。它与内核对象一样快,用于发送有关数据可用性的信号。而且,更重要的是,您可以先打开共享内存,然后将数据直接放在那里(保存一个复制操作)并向其他应用程序发出信号。其他应用程序可以直接从共享内存中使用数据(同样,无需复制)。
答案 2 :(得分:1)
目前在win32上不是最快的,但值得调查:0mq
在Windows上使用TCP套接字,但非常有效。
对于封闭源解决方案,我不认为29 West Ultra Messaging可以轻易胜过,包括.net中零拷贝消息传递的罕见功能