Nous avons une application silverlight qui utilise un répartiteur et j'apprécierais toute aide expliquant ce que font les codes suivants? (Malheureusement, le développeur qui a écrit le code est parti).Comment dispatcher fonctionne-t-il un thread?
donc ce que nous avons est la suivante:
public class ABC
{
private Dispatcher dispatcher;
private Thread threadRunner;
public void ABC()
{
threadRunner= new Thread(ThreadRunnerMethod)
{
IsBackground = true,
ApartmentState = ApartmentState.STA
};
threadRunner.Start();
}
private static void ThreadRunnerMethod()
{
Dispatcher.Run();
}
public void MainMethod()
{
dispatcher = Dispatcher.FromThread(threadRunner);
dispatcher.Invoke(new Action(() =>
// "DO SOME WORK WITH A COM OBJECT"
));
}
}
j'ai une certaine expérience de base avec filetage, mais je ne sais pas comment tout cela fonctionne?
JD
Bonjour Jon, Merci pour la réponse. Pour Control.invoke() si j'ai raison, nous mettons en attente les tâches que le thread principal doit faire. Ici, les tâches sont effectuées dans le nouveau thread? En outre, si une autre tâche est lancée, l'ajouterait-elle simplement à la file d'attente du nouveau thread et ne bloquerait pas le thread appelant? Merci –
Dans les deux cas, nous mettons en attente des tâches pour "un thread qui exécute une boucle d'événements" à faire. Pour WinForms, c'est le thread de l'interface utilisateur - qui ne doit pas nécessairement être celui sur lequel votre application a démarré, nécessairement. Si vous appelez Invoke, * * bloquera le thread appelant; BeginInvoke ne fait pas. –
Merci beaucoup. Il est maintenant clair ce qui se passe. J'ai commandé votre livre hier, j'ai hâte de le lire. JD. –