c# - 我可以在 ASP.NET MVC 中安全地生成线程吗?

标签 c# .net asp.net-mvc

我有一个计划任务,我需要通过浏览到一个页面来启动,我的虚拟主机不允许我使用 Windows 调度程序。

此任务执行的一项工作是从一堆其他网站获取一些数据,由于 Web 请求的速度有多慢,我已将任务设置为使用线程。

从 mvc 操作运行此任务似乎会导致整个网络服务器变得古怪,使其拒绝加载任何更多页面。

从网络应用程序使用线程是不是很糟糕?有没有办法让我安全地做到这一点?有哪些线程限制?我真的只需要了解更多信息吗?

编辑:子问题

如果我使用线程池中的线程(由 ASP.NET 运行时使用(感谢 Anton),我可以限制它可以使用的线程数吗?什么是 ASP.NET线程池大小限制?

如果有一个单独的网站来做这件事会更好吗?也许是一个包含单独的 ASP.NET 应用程序的虚拟文件夹?那会阻止我限制线程池吗?

最佳答案

在为传入请求提供服务时,ASP.NET 运行时从容量有限的 .NET ThreadPool 获取线程。因此,如果您正在使用来自该线程池的线程,这可能会损害您应用程序的可扩展性。

解决这个问题的方法是生成一个普通的Thread,但是当你的 AppPool 被回收时,这些可以被杀死。

关于c# - 我可以在 ASP.NET MVC 中安全地生成线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/868666/

相关文章:

c# - X509Certificate2 p12 是否需要存储?

c# - VB.NET,创建一个返回类型为泛型的函数?

java - Apache Axis - 序列化为 0001-01-01T00 :00:00. 000Z 的日历实例

asp.net-mvc - 将参数传递给 ASP.NET MVC 中的 View ?

c# - 使用Createmany动态设置类型

c# - Timer.Change() 会返回 false 吗?

c# - 忽略方法的返回值是否一定是不好的风格

c# - Winforms/WPF 应用程序支持彩色表情符号吗?

.net - 如何在Windows Server 2008 R2上安装ASP.net MVC 2?

javascript - setTimeout 不起作用?