我创建了一个计时器事件尝试在我的web api的后台运行,我发现它在本地开发机器上调试时工作正常。但是,当我将它们添加到服务器上的IIS时,计时器不起作用。它在第一个Web请求完成后停止(我通过将一些文本写入日志文件来测试它,在几次触发后,一旦Web请求完成,它似乎停止了) 这是一些示例代码。
void refreshTimeStart()
{
refreshTimer = new System.Timers.Timer(Convert.ToInt32(ConfigurationManager.AppSettings["TIMER_INTERVAL"]));
refreshTimer.Elapsed += new ElapsedEventHandler(connectionResetEvent);
refreshTimer.AutoReset = true;
refreshTimer.Enabled = true;
}
void connectionResetEvent(object source, ElapsedEventArgs e)
{
testIndex = testIndex + 1;
WriteToFile(testIndex);
}
static void WriteToFile(int i)
{
string text = "This start trigged. ";
System.IO.File.WriteAllText(@"C:\Projects\abc" + i.ToString() + ".txt", text);
}
知道怎么做到这一点?非常感谢。
答案 0 :(得分:2)
首先,在Web API中使用计时器可能不是最好的主意。 Windows服务更合适。话虽这么说,你的问题必须来自两个问题: