2010-04-13 5 views
2

Je suppose que cette question est plus générale que de travailler avec des composants COM. J'ai un client .NET écrit en C# et un composant COM écrit en pure API Win32. Le côté client utilise ce composant pour effectuer certaines actions. Comment savoir sur le client que ce composant a fait son travail?
Je pense qu'il peut s'agir de socket/pipe, avec l'écriture de composant à propos des résultats, et la lecture du client à partir de celui-ci affichant la progression à l'utilisateur. Quelle est la meilleure façon de procéder?Comment savoir les résultats de travail avec le composant COM?

Répondre

2

Avec COM, vous ne contrôlez pas les données circulant sur le socket. Vous avez une interface de type RPC, c'est-à-dire que votre client appelle une méthode sur un serveur, ce qui renvoie un résultat. Il n'y a pas de notion de résultats en continu. Pour faire ce que vous mentionnez, vous devez concevoir l'interface implémentée par le client, par exemple, au démarrage d'un travail, le serveur renvoie un identifiant et exécute le travail de manière asynchrone. Ensuite, le client peut régulièrement interroger le serveur, en donnant l'identifiant en tant que paramètre et en demandant au serveur la progression réelle.

Une autre façon de procéder consiste à implémenter un point de connexion sur le serveur, qui est essentiellement un mécanisme de rappel, afin que le serveur puisse informer le client de sa progression. Voir CodeProject 1 ou CodeProject 2 pour plus d'informations.

Questions connexes