Est-il possible de réaffecter le thread à une méthode différente, une fois qu'elle a été instanciée? Si non, y a-t-il des alternatives?réaffecter le thread à une autre méthode vb.net
2
A
Répondre
2
À moins que le fil ait commencé, vous pouvez utiliser la réflexion, mais l'utilité d'une telle chose est très douteuse. Pourquoi ne pas créer une autre instance de fil à la place:
var thread = new Thread(Method1);
thread
.GetType()
.GetMethod("SetStartHelper", BindingFlags.Instance | BindingFlags.NonPublic)
.Invoke(thread, new object[] { new ThreadStart(Method2), 0 });
thread.Start();
1
À moins que vous faites des choses étranges avec l'API de débogage ou d'hébergement du CLR et de jouer avec les internes, il n'y a aucun moyen d'un fil peut être « réaffecté » à une nouvelle méthode que cela impliquerait de manipuler la pile du fil.
Ce que vous pouvez faire est d'utiliser un modèle de commande sur votre fil pour l'envoyer travailler « charges utiles » qui pourrait changer dans le temps:
Action worker=null;
bool running = true;
var t = new Thread(() =>
{
while(running)
{
Action theWorker = worker;
if(theWorker!=null)
{
theWorker();
}
Thread.Sleep(10);
}
});
worker = new Action(() => Console.WriteLine("hi mum"));
t.Start();
Thread.Sleep(100);
worker=new Action(()=>Console.WriteLine("I can see my house from here"));
Thread.Sleep(100);
running = false;
Questions connexes
- 1. objectif c réaffecter le point
- 2. Comment déléguer un appel de méthode à un autre thread?
- 3. Thread advice VB.NET
- 4. VB.net Cross-Thread
- 5. Passage d'une méthode à une autre méthode
- 6. Changer le focus à une autre fenêtre dans VB.NET
- 7. "+ =" va réaffecter ou non?
- 8. Comment interrompre un autre thread à partir d'un moniteur Thread
- 9. accès à l'objet singleton d'un autre thread
- 10. Le rappel d'un autre thread provoque une exception
- 11. Comment limiter une méthode à un thread particulier?
- 12. Comment empêcher les autres threads d'accéder à une méthode lorsqu'un thread accède à une méthode?
- 13. WPF Prendre une capture d'écran d'un autre thread que le thread principal
- 14. Comment appeler une méthode IBAction à partir d'une autre méthode
- 15. Réglage Form.Owner à une forme d'un autre thread
- 16. Synchronisez le thread et une méthode avec un objet?
- 17. Différer BufferedWriter.write à un autre thread
- 18. Comment encapsuler à partir d'un thread dans une méthode?
- 19. Mocking une méthode d'objet dans un thread?
- 20. DoDragDrop() d'un autre thread
- 21. Comment savoir quel thread appelé une méthode
- 22. La méthode contient une autre méthode
- 23. Agrandir une MDIChild d'une autre application VB.NET
- 24. Comment passer une exception d'un thread à un autre thread (appelant) dans Delphi?
- 25. Exécution de la méthode App Delegate sur le thread principal à partir du thread secondaire
- 26. Méthode d'appel sur le thread GUI à partir d'un thread timers
- 27. Variable de sécurité de thread dans VB.NET
- 28. VB.NET - Comment masquer un formulaire dans une opération inter-thread
- 29. Async Socket Listener sur thread séparé - VB.net
- 30. VB.Net (ou C#) 2008 Multi Thread Import
Notez que si cela est appelé après que le fil est commencé, cela ne avoir un effet –
Oui, c'est pourquoi j'ai commencé ma réponse avec 'Sauf si le fil a commencé ...'. –