私は、単一のソケットに接続し、連続したデータを読み取るサービスを作成しています。私が受け取ったデータは、処理する別のスレッド(サービス内)に渡す必要があります。その理由は、処理に時間がかかることがあり、ソケットの受信をブロックしたくないからです。C#1ソケットクライアント連続データ
私は、BeginまたはAsyncの受信メソッドを使用して、スレッドが並行キューなどの読み取りを実行しているのではなく、データを処理することにしました。大量のデータがソケットを経由してくる可能性があるため、これを調整する必要があります。助言がありますか?
はい、本当にありがとうございます。それが単なる接続の場合、ソケットから同期的に読み取る専用スレッドがおそらくより良い選択肢になるでしょう。非同期メソッドは、複数の接続を扱うときに本当に輝きます。 – spender
ありがとう私は、このようなソリューションを既に用意していましたが、キューにバイトをダンプするだけで、並行キューを使用しました。次に、もう一方のスレッドでデータを分割します。ですから、私はそれがFIFOである必要があります、blockingcollectionがあるかどうか分かりません。 – Mark
@マーク: 'BlockingCollection'のデフォルトバッキングストアは' ConcurrentQueue'なので、デフォルトではFIFOです。必要に応じてバッキングストアを変更することができますが、FIFOキューが必要な場合は、デフォルトにすることをお勧めします。 –