我试图使应用程序A将字节数组写入内存映射流,应用程序B然后读取这块内存。我已经达到了它们可以读写的地步,但问题是我不能让应用程序B等待新数据到达,现在它只是尽可能快地读取。
在搜索了一会儿之后,我发现你可以给MemoryMappedStream.BeginRead
分配一个回调,但我不确定如何使用这个回调来等待来自流的新数据。如何在这种情况下进行回调呢?还是我找错方向了?
多亏了MatthewWatson,我研究了EvenWaitHandles,并设法使用两个AutoResetEvents
使进程等待彼此的信号。其中一个用于读取时设置MemoryReadEventWaitHandle
,另一个用于写入时设置MemoryWrittenEventWaitHandle
。这样他们就不会互相干扰,并按正确的顺序执行任务。