J'ai une application avec deux threads. L'un d'eux (T1) est la forme principale de l'interface graphique, un autre (T2) est la fonction qui fonctionne en boucle. Lorsque T2 reçoit certaines informations, il doit appeler la fonction avec le formulaire GUI. Je ne suis pas sûr que je le fais bien.beginInvoke, GUI et thread
Fonction d'appel T2 FUNCTION, qui met à jour quelque chose sous forme d'interface graphique.
public void f() {
// controler.doSomething();
}
public void FUNCTION() {
MethodInvoker method = delegate {
f();
};
if (InvokeRequired) {
BeginInvoke(method);
} else {
f();
}
}
Mais maintenant je dois déclarer deux fonctions. Comment utilise-t-il une seule fonction? Ou comment ça va?
modèle Nice. Un appel récursif pour vous invoquer si vous avez été appelé à partir d'un deuxième fil. Je soutiendrais que l'invocation devrait être faite de manière synchrone, donc l'appel du second thread (qui semble synchrone, juste un appel de méthode ordinaire) fonctionnerait de la même manière que s'il était appelé depuis le thread graphique, en effectuant la tâche appropriée avant de retourner. – KeithS
Intéressant: Je ne l'avais pas vu faire comme ça ... ça ne provoque pas une boucle sans fin ??? – IAbstract
@nirmus: Après l'accolade fermante - je pensais que l'objectif était de supprimer la deuxième fonction ["f()"] - ici, il est placé dans la fonction principale, après l'accolade. Fondamentalement, si vous avez besoin d'une invocation, vous vous invoquez, et sinon, vous pouvez simplement faire ce que vous voulez faire ... –