我使用Asp.Net WebSite(winforms ...)的遗留应用程序,我需要运行一个后台线程,定期收集一些文件。 但是这个线程必须运行一次!
当我在Application_Start中放置一个方法时,我的问题开始了:
void Application_Start(object sender, EventArgs e) {
SetConnection();
SetNHibernate();
SetNinject();
SetExportThread();
}
所以我在Visual Studio上启动应用程序并开始运行三个线程。
我需要一些单身人士吗?还是什么?
答案 0 :(得分:1)
尝试创建静态方法和变量:
private static bool _inited = false;
private static object _locker = new object();
private static void Init()
{
if (!_inited)
{
lock(_locker)
{
// Have to check again because the first check wasn't thread safe
if (!_inited)
{
SetConnection();
SetNHibernate();
SetNinject();
SetExportThread();
_inited = true;
}
}
}
}
void Application_Start(object sender, EventArgs e)
{
Init();
}