J'ai du mal à faire fonctionner un programme d'indexation de pages Web. J'ai un formulaire qui télécharge automatiquement les URL à indexer à partir d'un serveur de base de données et renvoie les réponses contenant les informations de la page indexée, sur UDP. J'ai une classe statique appelée UDP qui garde la trace des messages entrants et sortants. Il y a un événement qui se déclenche chaque fois qu'un message est reçu, que le formulaire qui contient tout le code d'indexation croise pour garder trace des messages envoyés par un programme sur le serveur qui contient la base de données d'URL à indexer.Comment puis-je appeler un gestionnaire d'événements à partir d'un thread distinct de celui sur lequel il a été créé?
Tout fonctionnait correctement, jusqu'à ce que j'ajoute un autre formulaire qui apparaît avant le formulaire d'indexation. Maintenant, le formulaire d'indexation s'ouvre sur un autre thread (via Application.Run() et un second thread). Le problème est que le gestionnaire d'événements n'est plus appelé lorsque l'événement est déclenché. Donc, la question est: que se passe-t-il ici, et que puis-je faire pour le réparer? Je suis certain qu'il s'agit d'un mécanisme de sécurité inter-thread qui n'appelle pas les gestionnaires d'événements sur un autre thread que celui sur lequel l'événement a été déclenché. Est-ce que quelqu'un sait d'une manière différente de faire ceci ou un moyen de contourner ceci? Merci d'avance ...
Il n'est généralement pas nécessaire d'utiliser DynamicInvoke ici - il suffit de l'invoquer.Il est également plus commun pour la * cible * de le faire ... –