【问题标题】:backgroundworker loop to read from telnet - C#从 telnet 读取的 backgroundworker 循环 - C#
【发布时间】:2013-04-02 10:33:01
【问题描述】:

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

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

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

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

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

感谢您的帮助。

粗毛

【问题讨论】:

  • 编辑:我会考虑从后台工作人员转移到任务并行库。

标签: c# backgroundworker


【解决方案1】:

你没有说你是如何从 telnet 服务器读取数据的。

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

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

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

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

【讨论】:

猜你喜欢
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
相关资源
最近更新 更多