【发布时间】:2017-06-15 22:38:58
【问题描述】:
我有这个计时器
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimerMethod);
aTimer.Interval = 5000;
aTimer.Enabled = true;
但是当我在定时器代码中调用这个方法时,
private void OnTimerMethod(object sender, ElapsedEventArgs e)
{
Response.Write("text");
}
我收到此错误消息
System.Web.dll 中出现“System.Web.HttpException”类型的异常,但未在用户代码中处理
我该如何解决这个问题?
更新:
我知道我做错了,但我怎样才能做到这一点?
提前致谢
【问题讨论】:
-
没有足够的 context 给你一个合理的答案。对于初学者,您如何调用方法
OnTimerMethod?显示一些代码。我们不需要一切,但我们确实需要比您迄今为止发布的更多。 -
在大多数 Web 编程中,响应上下文将在诸如计时器回调之类的事情发生时早已不复存在。您不能只在任意时间从任意线程写入 Web 响应。您实际上想在这里做什么?我怀疑这是一个 X/Y 问题。您是在向我们询问 Y,但在我们了解您实际尝试实现(X)之前,帮助您解决 Y 问题可能只会进一步误导您。就像有人抱怨他们不能很容易地敲入螺丝(不是钉子),所以我们给了你一把更大的锤子。
-
@Tim ,我已经在代码中调用了,你可以搜索一下,这个方法每5秒调用一次,你可能错过了。
-
我没有看到任何显式调用该方法的代码。这确实是一个 XY 问题,我建议您编写您真正需要的任何内容,而不是尝试将数据缓慢地提供给 Web 客户端,这可以,但不能直接进行 Web 调用。
-
非常明确地说:如果您的意图是将提要文本滴到正在进行的网络响应中,这是行不通的;这不是您进行页面更新的方式。要实现这一点,您将需要来自客户端的 ajax 或 web-sockets 之类的东西。
标签: c# timer non-static