【问题标题】:UI And TcpClient Issue in vb.netvb.net 中的 UI 和 TcpClient 问题
【发布时间】:2009-11-10 18:11:04
【问题描述】:

我在编写一个小型 ircbot 时遇到了一些问题。基本上,我使用单独的类中的 tcpclient 连接到服务器,该类也运行在自己的线程上。我想在主窗体的富文本框控件中显示服务器文本。

我遇到的一个大问题是,一旦文本开始进入整个应用程序,就会冻结。我首先尝试使用主窗体将侦听的事件,然后将文本添加到 textarea,直到文本停止出现,然后应用程序再次冻结。

我也尝试过使用具有相同结果的委托。其他人有这个问题吗?

【问题讨论】:

  • 似乎接收代码在 UI 线程中运行,而不是您手动创建的线程。显示线程函数代码,这可能有助于发现错误。

标签: .net user-interface concurrency


【解决方案1】:

基本上只允许 UI 线程访问表单。线程之间有多种通信方式。一种简单的解决方案是在表单上放置一个计时器并定期轮询来自 TCPClient 线程的更新。

【讨论】:

  • 引发事件不如计时器好,因为它应该只在事件发生时触发?
  • 否,因为事件代码在后台线程上运行,而计时器的事件将在 UI 线程上运行。
  • 这个问题是否可能是由于 textarea 位于其自身是 MDI 表单的子表单的表单上引起的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
相关资源
最近更新 更多