Parallel.ForEach の使用に問題があります。着信接続を待機して応答する、いくつかのハードウェア コンポーネントをシミュレートする必要があります。
私の現在のコードは次のとおりです。
Task.Factory.StartNew(() => components, (component) =>
{
var listener = new TcpListener(component.Ip, component.Port);
while(true)
{
using(var socket = listener.AcceptSocket())
{
//Read out socket and send a reply
socket.Close();
}
}
});
私が抱えている問題は、すべてのコンポーネントが独自のスレッドを作成するわけではないということです。スレッドの 1 つが終了しても、それらはまだ生成されません。
コレクション内のコンポーネントの現在の量は 40 で、生成されたスレッドの数は 33 (または少なくともそのように見える) です。
Parallel.Foreach() は、渡された列挙可能なコレクション用の新しい並列スレッドを作成するという印象を受けました。
私が間違っていることはありますか?