2012-02-09 3 views
0

私はC#でソケットを介してクライアントから常にデータを受信して​​います。私はクライアントからサーバーに8つの数字のセットを受け取り、このデータが再び繰り返されます。 1つのデータセットを受け取ったら、それらをシリアルポート経由ですべて送信しなければなりません。完了すると、次のデータセットを処理する必要があります。シリアルポートへの送受信には多くの時間がかかり、その間にソケット接続はすでに多くのデータを送信しています。奇妙なことは、ループが最初に完了した後、プログラムがハングして何もしないということです。これは、ソケット接続の受信データによってプログラムがそれ以上トリガされないことを意味します。なぜこれが起こっているのか教えてください。ソケット接続&シリアルポートを2つの別々のスレッドで実行する必要がある場合、どうすればよいですか?ソケット接続とシリアルポート接続を並列に実行する必要があります

ありがとうございます。

+0

今日、私のクリスタルボールは動作しません。動作していないコードの関連部分を表示できますか?また、どの行でそれがハングアップしますか? – svick

+0

こんにちはSvick、申し訳ありません、私は以前にコードを書いていませんでした。どこから始めたらいいかわからなかった。しかし、私は今それを修正しました。とにかくありがとう。 – Brett

答えて

1

1つのスレッド(プロデューサ)がソケットからデータを受け取ってそれをキューデータ構造に入れ、別のスレッド(コンシューマ)がキューからデータをフェッチし、書き込みを送信するプロデューサ - コンシューマパターンを実装できますシリアルポートに接続します。

関連する問題