【发布时间】:2012-12-22 14:41:30
【问题描述】:
我正在用 C# (.Net Framework 4.0) 重写一个古老的 VB6 程序。它与工厂车间的一台工业设备进行通信。 VB6 使用了一些旧的基于 COM 的套接字软件;我正在使用 .Net Socket 类。
当我向设备发送消息时,我希望得到回复,所以我知道要听一个。但是设备也可以在没有警告的情况下异步发送消息(例如,指示故障或问题)。所以我总是必须收到这些。所以我真正想要的是一个事件处理程序,只要有任何东西从设备进来,它就会被调用。
Socket 类似乎使用 BeginReceive/EndReceive 方案来处理接收事件。我可以在程序开始时执行一次 BeginReceive 来为所有传入消息定义事件处理程序,还是必须在整个程序中不断执行 BeginReceive/EndReceive?
提前感谢您澄清正确的方法。
【问题讨论】:
-
我还没有尝试过任何事情,因为我试图了解 Socket 类打算如何处理此类事件。除非我误读了它,否则 MSDN 会让您看起来每次都应该重新调用 BeginReceive,而我正在寻找一个我声明一次的事件处理程序,只要我在连接的。 Socket类有这样的东西吗?
-
不知道为什么这被否决了:写得很好,提供的答案不仅解决了这个问题,而且解决了我即将发布的问题。