backgroundworker循环从telnet读取 - C#

时间:2013-04-02 01:56:50

标签: c# backgroundworker

编程相当新,但需要使用此代码来获得我正在构建的硬件。

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

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

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

如果我在连接按钮中使用whil循环来封装backgroundworker启动器,那么ui会冻结(这是使用后台工作者开始的全部要点)。

谢谢你的帮助。

粗毛

1 个答案:

答案 0 :(得分:1)

您没有说明您是如何从telnet服务器读取的。

我建议不要使用BackgroundWorker甚至Task。您可以让GUI代码创建TcpClient实例。创建之后,按钮处理程序调用{​​{1}},将引用传递给将在建立连接时调用的函数。

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

请参阅BeginConnectEndConnect以及BeginRead BeginReadNetworkStream方法的示例。

此外,您可以通过搜索[TcpClient异步示例]获得一些好的信息。