功能完成后调用函数

时间:2011-10-31 01:50:47

标签: c# user-interface

这里的第一次海报!

我是一名高级计算机科学专业的学生,​​我目前正在开发一个使用telnet在线玩棋盘游戏(othello)的GUI。

伪是这样的......

  • 点击按钮
  • 更新GUI
  • 接收telnet输入
  • 更新GUI

冲洗并重复!

但问题是,我知道如何获取telnet函数的唯一方法是将它放在Click事件处理程序中,但GUI不会更新,直到整个函数完成。这意味着它每两次移动而不是一次移动。有没有办法告诉C#(我是新手)在一个完成后立即调用一个新函数?特别是在GUI上。

任何输入都表示赞赏 感谢

2 个答案:

答案 0 :(得分:3)

我不确定我是否正确理解了这个问题,但“接收telnet输入”这一行让我很担心。

您是在不使用任何异步TCP / IP通信的情况下在单个线程中编写此应用程序吗?

如果答案是肯定的,那么错误就在您正在使用的架构中。

您需要异步tcp / ip通信,例如,与另一个并行运行的线程,异步套接字或异步流。

你无法阻止GUI等待网络,这将是一个糟糕的架构。

尝试阅读有关codeproject的这篇简单但完整的文章:http://www.codeproject.com/KB/IP/socketsincs.aspx

Windows操作系统使用称为“消息泵”的东西来处理窗口。一切都是由单个线程(您的应用程序线程)处理的消息。 事件在消息队列中排队。 如果停止执行主线程的时间过长,则会停止处理消息队列,这将停止用户输入并进行绘制,因为渲染也是可以入队的Windows消息。

答案 1 :(得分:0)

您需要使用线程。这样,当一个线程仍在处理时,您可以启动一个新线程。我认为这是你能够同时完成另一项任务同时完成另一项任务的唯一方法。

任务完成后,您可以加入回主线程。