Veulent un .Net, Prise de Gestionnaire d'Événement pour l'entrée de données

Je réécris un ancien VB6 programme en C# (.Net Framework 4.0). Il communique avec une pièce d'équipement industriel sur le plancher de l'usine. VB6 utilisé quelques vieux COM socket logiciel, je suis en utilisant le .Net de la classe Socket.

Quand j'envoie un message à l'équipement, j'attends une réponse donc je sais écouter. Mais l'équipement peut également envoyer des messages de manière asynchrone sans avertissement (par exemple, pour indiquer une panne ou de problème). J'ai donc toujours avoir à recevoir de ceux-ci. Donc ce que je voudrais vraiment est un gestionnaire d'événement qui est appelée à chaque fois que quelque chose vient de l'équipement.

De la classe Socket semble utiliser un BeginReceive/EndReceive régime pour recevoir le traitement des événements. Puis-je simplement faire un BeginReceive une fois au début de mon programme pour définir un gestionnaire d'événements pour tous les messages entrants, ou ce que je dois constamment faire BeginReceive/EndReceive est tout au long de mon programme?

Merci d'avance pour clarifier la manière correcte de le faire.

Je n'ai pas essayé encore rien parce que je suis en train d'essayer de comprendre comment la classe Socket a l'intention d'événements de ce genre pour être manipulés. Sauf si je suis en erreur de lecture, il MSDN donne l'impression que vous êtes censé appeler BeginReceive à chaque fois, alors que je suis à la recherche d'un gestionnaire d'événement que je déclare encore une fois et événements simplement continuer à venir sur, tant que je suis connecté. Est-il une telle chose avec la classe Socket?
Aucune idée de pourquoi cela avait été downvoted: C'est tellement bien écrit qu'à la condition de répondre non seulement résout ce problème, mais aussi mon problème, j'ai été sur le point de publier.

OriginalL'auteur user316117 | 2013-01-08