0

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

  • EXE1
  • WCF 服务
  • EXE2

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

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

我怎样才能做到这一点?

4

2 回答 2

1

因为它被命名为PIPE数据先进来先出来,管道中的数据不会被覆盖。

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

于 2012-08-17T06:30:30.320 回答
0

您必须让服务确认其将要接收WCF的一组特定内容。bytes

所以Exe1发送 10 个字节并等待 WCF 确认它。

如果WCF不承认,Exe1将重新发送它(超时)!

如果WCF确认,您将发送接下来的 10 个字节,依此类推......

于 2012-08-17T06:27:35.313 回答