1

对编程相当陌生,但需要此代码才能使我正在构建的一些硬件正常工作。

我正在编写 ac# 程序以连接到 telnet 服务器并从提要中读取然后显示在文本框中(听起来很简单)...

连接按钮连接 telnet 并运行一个后台工作程序,然后等待 telnet 会话发送数据,然后输出到后台工作程序完整部分中的文本框。

我的问题是,一旦收到读取,我如何让后台工作人员再次运行?

如果我在封装backgroundworker starter 的connect 按钮中使用while 循环,那么ui 会冻结(这是使用后台worker 开始的全部意义)。

谢谢你的帮助。

粗毛

4

1 回答 1

1

你没有说你是如何从远程登录服务器读取的。

我不建议为此使用 aBackgroundWorker甚至 a Task。您可以让您的 GUI 代码创建一个TcpClient实例。创建完成后,按钮处理程序将调用BeginConnect,传递对将在建立连接时调用的函数的引用。

当调用连接回调时,它会获取流(调用GetStream),并BeginRead在流上调用。并且读取处理程序再次调用BeginRead。所以你最终得到的是一个异步循环。

请参阅BeginConnectEndConnect的示例,以及NetworkStream BeginReadEndRead方法。

此外,您可能会通过搜索 [TcpClient asynchronous example] 获得一些有用的信息。

于 2013-04-02T02:33:01.000 回答