我正在创建一个应用程序,其中有三个组件:
EXE1将数据写入管道,然后WCF读取数据并将其发送到EXE2。 但情况是,EXE1将数据写入管道for for循环。所以我只是想知道,假设EXE1已将数据写入管道但是wcf正在做其他工作并且还没有读取该数据。现在EXE1尝试写入第二个数据。所以在这种情况下,先前的数据是否覆盖,或者EXE1是否等待wcf服务一段时间。
我想控制这种情况,直到wcf没有读取第一个数据.EXE1必须等待一段时间。我想同步向EXE2发送数据。
我该怎么做?
答案 0 :(得分:1)
由于其名为 PIPE 的数据首先出现,而管道中的数据不会被覆盖。
在另一端读取之前等待写入:最好控制在另一端读取多少(例如,将消息长度作为第一个字节传递)。因此,读者知道它应该读取多少,并且只能从管道读取那么多时间。
答案 1 :(得分:0)
您必须让WCF
服务确认一组特定的bytes
即将收到。
因此Exe1
发送10个字节并等待WCF确认它。
如果WCF
未确认,Exe1
会重新发送(超时)!
如果WCF
承认它,你会发送下一个10字节,依此类推......