管道通讯

时间:2012-08-17 06:16:10

标签: c# c

我正在创建一个应用程序,其中有三个组件:

  • EXE1
  • WCF服务
  • EXE2

EXE1将数据写入管道,然后WCF读取数据并将其发送到EXE2。 但情况是,EXE1将数据写入管道for for循环。所以我只是想知道,假设EXE1已将数据写入管道但是wcf正在做其他工作并且还没有读取该数据。现在EXE1尝试写入第二个数据。所以在这种情况下,先前的数据是否覆盖,或者EXE1是否等待wcf服务一段时间。

我想控制这种情况,直到wcf没有读取第一个数据.EXE1必须等待一段时间。我想同步向EXE2发送数据。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

由于其名为 PIPE 的数据首先出现,而管道中的数据不会被覆盖。

在另一端读取之前等待写入:最好控制在另一端读取多少(例如,将消息长度作为第一个字节传递)。因此,读者知道它应该读取多少,并且只能从管道读取那么多时间。

答案 1 :(得分:0)

您必须让WCF服务确认一组特定的bytes即将收到。

因此Exe1发送10个字节并等待WCF确认它。

如果WCF未确认,Exe1会重新发送(超时)!

如果WCF承认它,你会发送下一个10字节,依此类推......