2013-04-02 19 views
1

编程相当新,但需要此代码来获取我正在构建的一些硬件。backgroundworker循环从telnet读取 - C#

我写C#程序连接到Telnet服务器和读取从进料,然后在文本框中显示(听起来很简单)...

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

我的问题是,一旦接收到读取数据,我怎么能让后台工作者再次运行?

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

谢谢你的帮助。

粗毛

+0

编辑:我会考虑离开背景工作者,并进入任务并行库。 –

回答

1

你不说你是如何从Telnet服务器读取。

我不会推荐使用BackgroundWorker甚至Task这个。您可以让您的GUI代码创建一个TcpClient实例。一旦创建了该按钮,按钮处理程序将调用BeginConnect,传递对将在连接建立时调用的函数的引用。

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

参见BeginConnectEndConnect的示例,并且NetworkStreamBeginReadEndRead方法。

此外,您可能会从搜索[TcpClient异步示例]中获得一些很好的信息。

+0

嗨,我正在使用Minimilistic Telnet库(http://www.codeproject.com/Articles/19071/Quick-tool-A-minimalistic-Telnet-library) –