ASP.NET 和计时器

标签 asp.net multithreading timer

考虑这段代码...

using System.Threading;
//...
Timer someWork = new Timer(
    delegate(object state) {
        //Do some work here...
    },
    null, 0, 60000);

HttpContext.Current.Application["SomeWorkItem"] = someWork;

这会很危险吗?在应用程序中缓存一个计时器以在您的网站运行时在后台执行一些工作似乎是安全的,但我想知道是否有人对此有一些经验。

我确信编写一个在后台运行的服务肯定会好得多,但有时这并不总是一种选择。这是替代方案吗?

最佳答案

这通常是个坏主意,因为 System.Threading.Timer 使用来自 ThreadPool 的线程,与 ASP.Net 相同。

如果由于任何原因您的计时器委托(delegate)阻塞或停止,计时器将在超时期限后开始一个新线程,这会占用 ASP.net 可用的线程。

如果它们都开始阻塞,实际上您将无法再提供任何 Web 请求(可能是一件坏事)

关于ASP.NET 和计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/117318/

相关文章:

c# - GridView 按代码隐藏列

Swift:DatePicker-Timer?

c# - 何时删除 C# 中的定时器事件处理程序?

JavaScript 计数计时器

asp.net - 使用默认的 asp.net mvc 模板时,Html 无法正确插入到电子邮件中

.net - WCF : How to Set MaxReceivedMessageSize Quota

javascript - 如何在 asp.net 中的页面加载时调用 javascript 函数

java - Java中是否可以保证非final字段的安全发布?

c++ - 在 C++ 中启动和停止线程内的循环

c++ - 'parallelize'这个程序有可能吗?