如何创建一个在ASP.NET WEB FORMS启动时运行的单例类(不依赖于用户登录)



我有一个承载在IIS上的ASP.NET web表单应用程序。

在应用程序中,我有一个代码片段,从应用程序启动的那一刻起,它就应该在后台进行一些工作。

问题是当我创建了singleton类并从Global.asax->Application_Start((,该代码仅在第一个用户连接到站点时运行。

如何将其设置为在没有任何用户依赖关系的情况下运行?有什么想法吗?

singleton类示例:

public sealed class SingeltonBackgroundWork
{
private static SingeltonBackgroundWork updater = null;
private static Timer timer;
private SingeltonBackgroundWork()
{
//Milliseconds * Seconds * Minutes
timer = new Timer(1000 * 60 * 10);
timer.Elapsed += new ElapsedEventHandler(OnElapsed);
timer.AutoReset = true;
timer.Enabled = true;
}
private void OnElapsed(object sender, ElapsedEventArgs e)
{
//DO SOME WORK
}
public static void InitProcess()
{
if (updater == null)
{
updater = new SingeltonBackgroundWork();
}
}
}

Global.asax Application_Start((:

void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
SingeltonBackgroundWork.InitProcess();
}

"该代码仅在第一个用户连接到站点时运行&";,因为它是在application_start下编写的。方法名称明确表示它只在应用程序启动时运行。如果代码需要按每个用户执行,则可以选择会话。因此,代码必须在Session_Start方法下。

参考SO链接-https://stackoverflow.com/questions/50136591/application-start-vs-session-start#:~:text=Application_Start%20只执行%20一次%20当,实例化%20并%20管理%20访问者%20数据。

最新更新