启动多个线程时Silverlight应用程序无响应

时间:2011-07-13 11:53:34

标签: c# multithreading silverlight

我有一个silverlight应用程序可以启动服务器端的许多工作。每项工作都是一个彼此独立的工作单元。

我使用了Parallel.ForEach()并且它工作正常然而我意识到如果我有大量的工作(比如超过300),当线程数增加50时,silverlight应用程序似乎停止响应(它没有冻结浏览器但是应该在其中填充数据的网格是空的并且小圆环保持旋转。

只有当线程计数再次下降(即所有作业都已完成处理)时才会填充网格。

我正在使用Asp.net开发服务器(基于cassini)进行测试,并且想知道它与它有关。

我还将我的代码切换为使用异步编程模型,但是我遇到了与线程增加相同的问题。

可能导致此问题的任何想法?

JD

我正在考虑做ThreadPool.SetMaxThread(),但我在某处读到这可能不适用于网络托管应用。

1 个答案:

答案 0 :(得分:5)

如果您为每个线程吞并所有线程,那么就没有任何线程可用于维护您的网格可能取决于获取所需数据的WCF请求。

您可能希望使用ForEach方法中的ParallelOptions参数来指定一次调度的最大并行操作数。