2010-02-08 4 views
2

Existe-t-il un moyen d'obtenir les informations du thread principal (le thread d'application) à partir d'un deuxième thread? Mon problème est que je dois définir le currentprincipal dans le thread principal, mais l'authentification est faite dans un autre thread parce que c'est une tâche longue et complexe, mais quand je mets le currentPrincipal dans le second thread, le thread principal pas avoir l'information.Obtenir le thread appelant

Merci pour toute aide.

Répondre

2

Créez une variable statique sur le module que les deux threads exécuteront à l'intérieur de. Définissez la variable dans le thread principal et accédez-y dans le 2ème.

+0

Ou de le transmettre dans un objet d'état. –

+0

ou que le second thread rappelle à l'aide d'un délégué ou d'un événement. – Will

+0

@Will, l'exécution de ce délégué ou de cet événement ne se produirait-elle pas sur le second thread? (sauf si vous avez utilisé Invoke()) –

0

J'ai écrit une méthode de test ThreadJoinTest(). Exécutez-le dans le principal.

public static void ThreadJoinTest() 
{ 
    // get current (calling) tread 
    Thread current_thread = Thread.CurrentThread; 

    // create a second thread 
    Thread second_thread = new Thread(SecondThreadFunc); 

    // pass calling thread to second thread 
    second_thread.Start(current_thread); 

    Console.WriteLine("Main thread: Sleep a bit..."); 
    Thread.Sleep(1000); 
    Console.WriteLine("Main thread: Ended!"); 
} 

// method executed in second thread 
static void SecondThreadFunc(object t) 
{ 
    Console.WriteLine("Now in 2. thread..."); 

    // wait calling thread to end 
    ((Thread)t).Join(); 

    Console.WriteLine("In 2. thread: First thread ended"); 
    Console.WriteLine("In 2. thread: Press a key to exit!"); 
    Console.ReadKey(); 
} 
Questions connexes