none
Exécution d'un thread RRS feed

  • Question

  • Bonjour,
    dans le code behind d'une page ASP. Net, j'exécute une méthode dans un thread séparé :

    System.Threading.Thread th=new System.Threading.Thread(new System.Threading.ThreadStart(executer));
    th.Start();

    cela fonctionne bien sur plusieurs serveurs, mais sur l'un d'entre eux,
    le thread ne se lance pas (j'ai ajouté des logs au début de "executer"
    et je ne les obtiens pas). Je ne trouve pas de trace d'une quelconque
    exception ou d'erreurs de permission.

    Si vous avez une petite idée, je bloque comlètement!

    PS: les différentes plateforme sont sous iis 6.

    lundi 29 janvier 2007 14:17

Réponses

  • Merci,

    grâce à cette astuce et en ajoutant une autre boucle, j'ai pu me rendre compte que le thread passait par l'état Running avant de prendre l'état Stopped très rapidement. Il s'agissait uniquement d'une dll non à jour provoquant une TypeLoadException d'où la non exécution des logs de la méthode executer...

    Comment perdre du temps sur des choses simples !

    Merci pour l'aide!

    lundi 29 janvier 2007 17:36

Toutes les réponses

  • Bonjour,

    Est-ce que nous ne récupérez pas une exception lors de l'appel à Start() ?

    D'autre part, que vous retourne l'appel à la propriété ThreadState une fois la méthode Start() appelée ?

    lundi 29 janvier 2007 14:49
  • Bonjour,

    j'ai ajouté un log juste après l'appel de Start (logevent), je l'obtiens bien ce qui doit signifier que Start ne lance pas d'exception. Le log m'indique que la propriété ThreadState a la valeur : Unstarted.

     

    lundi 29 janvier 2007 15:05
  • La machine sur laquelle se pose le problème ne serait pas trop surchargée ? D'où le "Unstarted" ...

    A ne pas utiliser en production  car pas très propre mais pouvant aider pour le débuggage :

    System.Threading.Thread th = new System.Threading.Thread(new System.Threading.ThreadStart(executer));
    th.Start();

    While(th.ThreadState == ThreadState.Unstarted)
    {
         th.Sleep(1000);
         th.Start();
    }

    lundi 29 janvier 2007 15:25
  • Merci,

    grâce à cette astuce et en ajoutant une autre boucle, j'ai pu me rendre compte que le thread passait par l'état Running avant de prendre l'état Stopped très rapidement. Il s'agissait uniquement d'une dll non à jour provoquant une TypeLoadException d'où la non exécution des logs de la méthode executer...

    Comment perdre du temps sur des choses simples !

    Merci pour l'aide!

    lundi 29 janvier 2007 17:36