C# 内存映射流-等待数据到达
我试图让应用程序A将字节数组写入内存映射流,然后应用程序B读取这段内存。我已经到了他们可以读写的地步,但问题是我不能让应用程序B等待新数据的到来,现在它只能以尽可能快的速度读取C# 内存映射流-等待数据到达,c#,callback,stream,shared-memory,memory-mapped-files,C#,Callback,Stream,Shared Memory,Memory Mapped Files,我试图让应用程序A将字节数组写入内存映射流,然后应用程序B读取这段内存。我已经到了他们可以读写的地步,但问题是我不能让应用程序B等待新数据的到来,现在它只能以尽可能快的速度读取 在搜索了一段时间后,我发现您可以将回调分配给MemoryMappedStream.BeginRead,但我不确定如何使用此回调来等待流中的新数据。在这种情况下,人们会如何回电?还是我看错方向了?多亏了马修沃森,我查看了EvenWaitHandles,并通过使用两个自动重置事件,设法让进程等待对方的信号。其中一个用于在执行
在搜索了一段时间后,我发现您可以将回调分配给
MemoryMappedStream.BeginRead
,但我不确定如何使用此回调来等待流中的新数据。在这种情况下,人们会如何回电?还是我看错方向了?多亏了马修沃森,我查看了EvenWaitHandles,并通过使用两个自动重置事件,设法让进程等待对方的信号。其中一个用于在执行读取时设置MemoryReadEventWaitHandle
,另一个用于在完成写入时设置MemoryWrittenEventWaitHandle
。这样,它们就不会相互干扰,并以正确的顺序执行任务。可能会对您有所帮助。您可以使用命名作为信号发送给使用线程,以告知数据何时已完全写入。(您可能还需要另一个消费线程的EventWaitHandle
,以向生产线程表明它已经消费了数据)@MatthewWatson看起来确实是一个有趣的可能性,谢谢您的建议。