【发布时间】:2013-08-24 16:56:58
【问题描述】:
我对编程非常陌生,我认为到目前为止我的学习已经足够好,但我仍然无法理解以我想要的方式进行延迟的想法。我正在做的是一种使用涉及战斗系统的 Windows 窗体应用程序的测试“游戏”。在其中,我想制作一个每隔几秒钟执行一次动作的 NPC。问题是,我还想让玩家在攻击之间进行交互。 Thread.sleep 似乎真的不适合我,不仅因为我不知道如何多线程,而且每当我尝试运行它时,比如这样:
textBox1.Text += "\r\nThread Sleeps!";
System.Threading.Thread.Sleep(4000);
textBox1.Text += "\r\nThread awakens!";
它似乎坚持先睡,然后打印两行。
我想这就是我目前能说的全部内容,但如果这仍然过于模糊或冗长,请随时告诉我。
简而言之,在 C# 中,我想在运行前做一些延迟,但同时仍然允许用户交互。
【问题讨论】:
-
您可以改用计时器并在您的时间间隔触发它...
-
线程还负责打印您的 UI,但由于您使用
Sleep阻止它,它无法更新显示您的第一行的 UI。 -
使用 Task.Delay 代替睡眠。这样你就不会遇到被阻止的 UI 的任何问题。这个新功能在 .Net 4.5 中可用。
-
他/她问 - 没有睡觉:)