我正在尝试在 WPF 中实现一个基本的 TCP 客户端。我已经设法使用 Windows 窗体来做到这一点,但无法让它在 WPF 中工作。我试着回到最基本的东西,一点一点地添加东西。这是为了连接到输出单行代码的 arduino。我可以通过 telnet 成功连接到它,所以问题出在我的代码上。
这是我到目前为止所拥有的:
public partial class MainWindow : Window
{
private TcpClient tcp;
private StreamWriter SwSender;
private StreamReader SrReciever;
private Thread thrMessaging;
private delegate void UpdateLogCallBack(string strMessage);
public MainWindow()
{
InitializeComponent();
}
private void btn_Connect_Click(object sender, RoutedEventArgs e)
{
TcpClient tcp = new TcpClient();
txt_Log.AppendText("connecting");
tcp.Connect(IPAddress.Parse("192.168.137.1"), 2000);
txt_Log.AppendText("Connected");
thrMessaging = new Thread(new ThreadStart(ReceiveMessages));
thrMessaging.Start();
}
private void ReceiveMessages()
{
SrReciever = new StreamReader(tcp.GetStream());
while (true)
{
string response = SrReciever.ReadLine();
txt_Log.Dispatcher.Invoke(new UpdateLogCallBack(this.UpdateLog), new object[] { response });
}
}
private void UpdateLog(string strMessage)
{
txt_Log.AppendText(strMessage);
}
}
}
运行它会在接收消息方法中给我一个错误。它说错误与“SrReciever = new StreamReader(tcp.GetStream());”有关 说它是 NullReferenceException,对象引用未设置为对象的实例。
我不是最擅长编程的,所以如果有一个在 WPF 中工作的 TCP 客户端的示例,那将非常有帮助。
谢谢尼克