J'écris une application fortement asynchrone.Appels de méthode de file d'attente - aucune idée comment?
Je suis à la recherche d'un moyen de mettre en file d'attente des appels de méthode, similaire à ce que fait BeginInvoke/EndInvoke .... mais sur ma propre file d'attente. La reaqson est que j'ai mon propre système optimisé de mise en file d'attente de messages en utilisant un pool de threads mais en même temps je m'assure que chaque composant est un thread unique dans les requêtes (un thread traite uniquement les messages pour un composant).
J'ai beaucoup de messages qui vont et viennent. Pour un usage limité, j'aimerais vraiment pouvoir mettre en file d'attente un appel avec des paramètres, au lieu de devoir définir mon propre paramètre, la méthode d'emballage/déballage juste pour faire beaucoup d'appels admnistratifs. Je ne veux pas toujours contourner la file d'attente, et je ne veux surtout pas que le service d'envoi attende que l'autre service réponde.
Quelqu'un connaît un moyen d'intercepter un appel de méthode? Un moyen d'utiliser TransparentProxy/Virtual Proxy pour cela? ;) ServicedComponent? Je voudrais que ce soit aussi peu de frais généraux que possible;)
faire la queue tghe est pas le problème;) je que l'on déjà, et beaucoup de messages qui transportent les mises à jour de données. Mon problème sont les appels de fonction seulement. La file d'attente utilise ensuite un ThreadPool pour obtenir un thread de travail qui traite son contenu;) J'ai beaucoup de choses de mise à jour de données croisées là-bas - maintenant je cherche un moyen de mettre en file d'attente les appels de méthode. Un type de message qui n'a pas de "données" mais un appel de fonction avec tous les paramètres, donc je peux basicall appeler des méthodes sur le service cible. Cela réduirait de manière significative le nombre de messages différents dont j'ai besoin ... – TomTom
et je n'aurais pas à trouver une grosse instruction switch juste pour appeler différentes méthodes. – TomTom
Puisque vous cherchez à faire la queue dans les appels de méthode en cours, passer lambdas semble être exactement ce que vous cherchez ... –