に新しいスレッドを生成するために失敗しました。実際のループは、ネットワークレスポンス(基本的にはネットワークスキャナ)の待ち時間はあまりありませんし、Visual Studio 2010でうまく動作します。アプリは何百ものスレッドに広がります。十分に長く走ってください。私は、「ClickOnceの」アプリケーションとしてそれを「公開」がオンのとき.NET 4.0パラレルforeachループは、私はそれの中心で並列foreachループを持っている小さなWPF C#アプリケーションを持っている「生産」アプリケーション
ParallelOptions parallelOptions = new ParallelOptions();
parallelOptions.MaxDegreeOfParallelism = 4; // I've tried changing this all the way up to the maximum
ThreadPool.SetMinThreads(100, 100);
Parallel.ForEach<string>(scanAddresses, parallelOptions, (toscan,state) =>
{
doMyScan(toscan);
}
アプリケーションが一部に、まったく確かにもマルチスレッド、またはしない、しかし:
ここでは、コードのコアビットですマシン - スレッドカウントは、どれくらいの時間が経過しても16スレッドを超えることはありません。私は、共通の分母が何であるかを正確に把握することはできません - 私はOS(例えばXP対Win7)、プロセッサ、メモリ、それが32ビットか64ビットかどうかを排除しました。私は本番サーバからの私の開発VMにそれをダウンロードするとき、アプリケーションでも誤動作 - それは上に開発されたとして正確同じボックスに「ライブ」の実行時にVS2010の下で飛んで同じアプリとコードがクロールします。しかし、他のマシンでは、XPインストールの中でも非常に限られたものであっても、多くのスレッドを生成するように設計されています。
コアコードがサウンドであることは確かです。結局のところ、いくつかのマシンでうまく動作していて、コンソールアプリケーションとして動作する同じコードのバリエーションがあります。つまり、展開プロセスが壊れているそれ。誰もがこのトラブルシューティングを開始する方法を提案することはできますか?
コードを提供します。通常は、人々のトラブルシューティングに役立ちます。撮影した – Quintium
ポイントは、コードが – KenD