Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用来自WCF的TPL任务_Wcf_Iis_Task_Task Parallel Library - Fatal编程技术网

使用来自WCF的TPL任务

使用来自WCF的TPL任务,wcf,iis,task,task-parallel-library,Wcf,Iis,Task,Task Parallel Library,为了优化一些服务器端数据库调用,我决定使用System.Threading.Tasks.Task并行化几个数据库调用,然后使用Task.WaitAll()获取所有结果,打包并通过WCF发送给客户端。在VisualStudio(cassini)中的dev web服务器上进行测试时,这似乎可以正常工作,但在部署到IIS时不起作用。对客户端调用(使用firebug)进行分析表明,调用可以到达IIS,但没有相应的调用提交到SQL Server 有人经历过这个吗?在IIS中使用任务是否有限制?没有直接限制

为了优化一些服务器端数据库调用,我决定使用System.Threading.Tasks.Task并行化几个数据库调用,然后使用Task.WaitAll()获取所有结果,打包并通过WCF发送给客户端。在VisualStudio(cassini)中的dev web服务器上进行测试时,这似乎可以正常工作,但在部署到IIS时不起作用。对客户端调用(使用firebug)进行分析表明,调用可以到达IIS,但没有相应的调用提交到SQL Server


有人经历过这个吗?在IIS中使用任务是否有限制?

没有直接限制-但是,当您使用任务时,它会在线程池上调度任务。默认情况下,IIS为整个IIS进程共享一个线程池,这可能(特别是在繁忙的服务器上)导致线程不足。这意味着在处理任务时,关于使用线程池的相同指导也适用。看


为了确定这是否是问题所在,至少作为测试,您可以使用提示生成所有任务实例。这将导致默认TaskScheduler在其自己的专用(新)线程上创建任务,而不是使用线程池线程。虽然我不认为这是一个长期解决方案的好主意,但您可以验证是线程池不足导致了您的问题。如果是,您可以确定其他选项,例如可能使用自定义TaskScheduler来管理此操作的线程/任务。

谢谢Reed-一些好信息。我很有信心这不是线程饥饿,但我需要做更多的调查。在我前进的过程中,会发布我的发现吗?有什么发现吗?我也有类似的问题,很好奇这会有什么结果?