在函数结束后再调用函数

本文关键字:函数 调用 结束 | 更新日期: 2023-09-27 18:12:44

第一次在这里张贴海报!

我是一名计算机科学专业的大四学生,我目前正在开发一个GUI,使用telnet在线玩棋盘游戏(奥赛罗)。

pseudo是这样的…

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

冲洗并重复!

问题是,虽然,我知道如何获得telnet功能的唯一方法是将其放在Click事件处理程序中,但GUI不会更新,直到整个功能完成。这意味着它每两步更新一次,而不是一次。有没有一种方法可以告诉c#(我是新手)在一个函数完成后立即调用一个新函数?

欢迎任何输入由于

在函数结束后再调用函数

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

你是在一个单线程中编写这个应用程序而不使用任何异步TCP/IP通信吗?

如果答案是肯定的,则错误在您正在使用的体系结构中。

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

你不能停止GUI等待网络,这将是一个糟糕的架构。

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

Windows操作系统使用一个叫做"消息泵"的东西来处理窗口。一切都是由单个线程(您的应用程序线程)处理的消息。事件在消息队列中排队。如果你停止主线程的执行太长时间,你就停止了消息队列的处理,这将停止用户输入和绘画,因为渲染也是一个可以进入队列的窗口消息。

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

任务完成后,您可以连接回主线程。