2011-07-13 10 views
2

私はサーバー側でいくつかのジョブを開始するSilverlightアプリケーションを持っています。各ジョブは、互いに独立した作業単位です。複数のスレッドが起動したときにSilverlightアプリケーションが応答しない

私はParallel.ForEach()を使用していましたが、うまくいきましたが、スレッド数が50増加したときに、Silverlightアプリケーションが応答を停止するように見えます(300以上)。ブラウザをフリーズしないでください。データが入っているはずのグリッドは空で、小さなドーナツは回転し続けます)。

スレッドカウントが再び低下したとき(つまり、すべてのジョブが処理を終了したとき)にのみ、グリッドにデータが取り込まれます。

私はAsp.net Developmentサーバー(cassiniベース)を使用してテストしており、それに何か関係があると思っていました。

また、非同期プログラミングモデルを使用するように私のコードを切り替えましたが、スレッドが増加したのと同じ問題が発生しました。

何か原因が考えられますか?

JD

私はThreadPool.SetMaxThreadを()やって考えていたが、私は、これはウェブホスティングされたアプリのために動作しない場合がありますことをどこかで読みました。

答えて

5

Parallelを使用してすべてのスレッドをゴブリングする場合は、表示する必要があるデータをフェッチするためにGridが使用する可能性のあるWCF要求を処理できるスレッドが残っていません。

ForEachメソッドのParallelOptionsパラメータを使用して、一度に送出される最大並列操作数を指定したいと思うことがあります。

+0

こんにちはアンソニー、返信いただきありがとうございます。これは私がParallelOptionsのようなものでなければならないと確信していましたが、それを見つけることができませんでした。私はそれを行こう。また、非同期モデルを使用する場合は、ParallelOptionsと同様のものがありますか? –

関連する問題