内存映射流 - 等待数据到达

时间:2016-10-13 14:25:31

标签: c# callback stream shared-memory memory-mapped-files

我试图让应用程序A将一个字节数组写入内存映射流,然后应用程序B读取这段内存。我已经达到了可以读写的程度,但问题是我无法让应用程序B等待新数据到达,现在它只是尽可能快地读取。

在搜索了一下后,我发现你可以为MemoryMappedStream.BeginRead分配一个回调,但我不确定如何使用这个回调来等待来自流的新数据。如何针对这种情况进行回调?或者我是否在寻找错误的方向?

1 个答案:

答案 0 :(得分:1)

感谢MatthewWatson,我调查了EvenWaitHandles并设法让处理器使用两个AutoResetEvents等待彼此的信号。其中一个用于在执行读取时设置MemoryReadEventWaitHandle,而另一个在写入完成时设置MemoryWrittenEventWaitHandle。这样他们就不会互相干扰,并按照正确的顺序执行任务。