async Task<JsonResult>
为了正确使用ThreadPool或我应该考虑的其他任何线程技术,我需要更改什么,并确保我正确关闭了问题?该站点通常只有几十个并发用户,每当他们加载页面时,都会进行此调用 - 因此,这不是大量的线程。
我还会添加异常处理以确保任何内容都没有爆炸。
为了正确使用ThreadPool或我应该考虑的其他任何线程技术,我需要进行什么更改,并确保我正确关闭东西?它取决于.
您的当前代码不会从线程池重复使用线程,也可能是线程恒星引起500(ASP.NET请求处理而停滞了,因为CLR线程池不含线程)。 提出一个新线程的性能罚款很小(这就是为什么线程池首先存在),但是对于高遍历高且高的并发网站,这是一个不错的选择。 也就是说,如果您的网站为低遍及少的并发用户群提供服务,我认为它会杀死。使用
await Task.WhenAll(tasks)
的眼睛(意见)要容易得多。 这将在线程池中使用线程,但是除非您在单核机上运行网站,否则我怀疑任何人都会注意到。 线程模型的外部,还有更多的aarchitectural减少数据库命中的方法,但是您的问题是如此具体,我没有太多建议而不了解更多。