c# - System.Web.HttpApplication 中的夜间事件?它在一段时间后关闭,不执行定时事件
问题描述
在 System.Web.HttpApplication 中,我希望有一个夜间活动,自动发送电子邮件或更新其他内容。旧系统为此使用 System.Threading.Timer,如下所示。但是,应用程序在不活动一段时间后关闭。
我试图添加一个计时器作为心跳,但这取决于外部的动作。
现在我正在寻找一种方法来让我的应用程序保持活力,或者“唤醒它”,这样我就可以在夜间进行活动。还是应该在再次调用“lastRun”时检查它?只需检查当天是否完成了事情,如果是现在,现在就做,或者设置一个未来几分钟的计时器
有任何想法吗?
public class WebApiApplication : System.Web.HttpApplication
{
~WebApiApplication()
{
try
{
Log.Information("Closing WebApiApplication");
}
catch (Exception e)
{
}
}
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
//Add Serilog
string logFileName = HostingEnvironment.MapPath(@"~/new_" + DateTime.Now.ToString("yyyyMMdd") + ".log");
Log.Logger = new LoggerConfiguration()
.WriteTo.File(
path: logFileName,
retainedFileCountLimit: 7,
shared: true,
rollingInterval: RollingInterval.Day,
rollOnFileSizeLimit: true,
fileSizeLimitBytes: 123456,
flushToDiskInterval: TimeSpan.FromSeconds(5))
.CreateLogger();
Log.Information("Starting Serilog #1");
TimeSpan timeToGo = .....
int intervalInHours = 24;
var timer = new Timer(x =>
{
task.Invoke();
}, null, timeToGo, TimeSpan.FromHours(intervalInHours));
// idea for replacemnt - is this the best way?
if(lastRunDay < today)
{
DoEvents(...)
}
}
}
解决方案
推荐阅读
- java - 如何从实体集合中对属性上的实体列表进行排序
- delphi - 没有找到 cxLookUpComboBox.Properties.ItemHeight?
- javascript - Angular 4选择所有复选框
- c# - NLog 使用 When Condition Renderer 获取值可用性
- xpath - Unable to find element by attribute with lxml
- c++ - 为什么程序 1 有效,但程序 2 无效,有人可以解释程序 2 有什么问题吗?
- java - For 循环映射覆盖以前的值
- javascript - 在移动视图中以字体真棒图标显示标题
- php - 在woocommerce中使用foreach设置购物车数量时的无限循环
- r - 日期未在 plotly online 上正确显示