0

3つのコンポーネントがある1つのアプリケーションを作成しています。

  • EXE1
  • WCFサービス
  • EXE2

EXE1はデータをパイプに書き込み、WCFはデータを読み取ってEXE2に送信します。しかし、シナリオは、EXE1がforループでパイプにデータを書き込むということです。つまり、EXE1がパイプにデータを書き込んだのに、wcfが他の作業を行っていて、そのデータをまだ読み取っていないとします。EXE1は2番目のデータを書き込もうとしています。この状態では、前のデータがオーバーライドされているか、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 に答える