2010-06-02 15 views
0

J'ai une application héritée utilisant Asp.Net WebSite (winforms ...) et j'ai besoin d'exécuter un thread d'arrière-plan qui collectent périodiquement certains fichiers. Mais ce fil ne doit s'exécuter qu'une seule fois!Feu juste une fois un fil dans Asp.net WebSite Global.asax

Mon départ de problème quand je mets une méthode Application_Start:

void Application_Start(object sender, EventArgs e) { 
    SetConnection(); 
    SetNHibernate(); 
    SetNinject(); 
    SetExportThread(); 
} 

Je commence mon application sur Visual Studio et trois fils commencent à courir.

J'ai besoin d'un singleton? ou quelque chose?

Répondre

1

essayer de créer un procédé et variable statique:

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(); 
}