如何在C#中实现JavaScript的setTimeout之类的东西?

时间:2010-11-11 19:27:12

标签: c# settimeout

我有一个C#应用程序,它从服务器接收更新,处理它并更新GUI。更新不断进行,每秒说几次。我希望应用程序每2秒最多更新一次GUI。因此,如果在时间T进行更新,我希望从T到T + 2sec的所有更新都保留在缓冲区中,并且在T + 2sec处进行处理和GUI更新。我知道在JS中你可以使用setTimeout()在将来的某个时间执行一些代码,所以我想要这样的东西。

这是一个合适的方法吗?我听说过使用线程来安排"函数调用并不是一个好主意,但我不确定更好的方法。使用具有两秒间隔的Timer,与GUI线程同步,进行处理/更新会不会很糟糕?

2 个答案:

答案 0 :(得分:2)

您可以使用System.Windows.Forms.Timer。它不会在单独的线程中运行事件,它是运行它们的GUI线程。这样您就可以直接更新GUI而无需使用Invoke。

答案 1 :(得分:0)

您应该使用其中一个计时器类,就像您在问题中发布的一样。

请参阅this MSDN文章比较它们 - 这可以为您做出决定提供良好的基础。