我需要从 telnet 连接读取异步数据。Telnet 库提供了一个处理程序,所以我这样设置:
public PortechGSMBox(string ipaddress, int port, String user, String password, int modulenum = 1)
{
telnet = new TelnetWrapper();
telnet.DataAvailable += new DataAvailableEventHandler(DataReceivedHandler);
telnet.Disconnected += new DisconnectedEventHandler(DisconnectHandler);
telnet.Connect(ipaddress, port);
Login(user, password, modulenum);
}
private void DataReceivedHandler(object src, DataAvailableEventArgs args)
{
output+=args.data
}
我看到接收到的数据没有按正确的顺序接收,可能是因为事件来自多个线程。所以如果服务器发送“123456789”我可以收到“56781234”。我尝试在 DataHandler 之前添加 [MethodImpl(MethodImplOptions.Synchronized)] ,但不起作用。你有什么建议?