Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 管道通信_C#_C - Fatal编程技术网

C# 管道通信

C# 管道通信,c#,c,C#,C,我正在创建一个应用程序,其中有三个组件: 例1 WCF服务 例2 EXE1将数据写入管道,然后WCF读取数据并将其发送给EXE2。 但情况是,EXE1将数据写入for循环中的管道。所以我只想知道,假设EXE1已将数据写入管道,但wcf正在执行其他工作,并且尚未读取该数据。现在EXE1正在尝试写入第二个数据。所以在这种情况下,前一个数据是重写还是EXE1等待wcf服务一段时间 我想控制这个条件,直到第一个数据没有被wcf读取,EXE1必须等待一段时间。我想同步发送数据到EXE2 我该怎么做?您

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

  • 例1
  • WCF服务
  • 例2
EXE1将数据写入管道,然后WCF读取数据并将其发送给EXE2。 但情况是,EXE1将数据写入for循环中的管道。所以我只想知道,假设EXE1已将数据写入管道,但wcf正在执行其他工作,并且尚未读取该数据。现在EXE1正在尝试写入第二个数据。所以在这种情况下,前一个数据是重写还是EXE1等待wcf服务一段时间

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


我该怎么做?

您必须让
WCF
服务确认它将要接收的一组特定
字节

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

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

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

作为其命名的管道数据,首先进入的数据首先出来,管道中的数据不会被覆盖


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

但是EXE1如何知道wcf是否读取数据。第二个数据被覆盖到第一个数据,或者第一个数据将被删除。@sunilpol在向wcf发送一些数据后,如果它没有通过发送确认信息(如码字)来响应您,那么它将在发送一些数据后删除。@sunilpol(您选择的一些二进制单词)如果没有时间限制,您会知道WCF没有收到数据。好的。我会这样做。但是请告诉我,当WCF读取数据,现在exe1得到确认,现在它写入第二个数据时,第一个数据会自动删除或被第二个数据覆盖data@sunilpol我不知道有关WCF的问题,但我认为你必须编辑这个问题,并告诉更多关于你的WCF服务的信息ice.你已经创建了它,如果是,为什么不在
WCF
本身中创建一个
线程,专门监听
Exe1
。在Exe1中不创建管道&WCF仅在exe2请求数据时读取数据