编程相当新,但需要使用此代码来获得我正在构建的硬件。
我正在编写一个c#程序来连接到telnet服务器并从feed读取然后显示在文本框中(听起来很简单)......
连接按钮连接telnet并运行后台工作程序,然后等待telnet会话发送数据,然后输出到后台工作程序完整部分的文本框。
我的问题是,如果收到读取后如何让后台工作人员再次运行?
如果我在连接按钮中使用whil循环来封装backgroundworker启动器,那么ui会冻结(这是使用后台工作者开始的全部要点)。
谢谢你的帮助。
粗毛
答案 0 :(得分:1)
您没有说明您是如何从telnet服务器读取的。
我建议不要使用BackgroundWorker
甚至Task
。您可以让GUI代码创建TcpClient
实例。创建之后,按钮处理程序调用{{1}},将引用传递给将在建立连接时调用的函数。
调用连接回调时,它会获取流(调用BeginConnect
),并在流上调用GetStream
。读取处理程序再次调用BeginRead
。所以你最终得到的是一个异步循环。
请参阅BeginConnect和EndConnect以及BeginRead
BeginRead和NetworkStream
方法的示例。
此外,您可以通过搜索[TcpClient异步示例]获得一些好的信息。