如何在c#中一直运行一个简单的函数

时间:2016-01-30 09:24:35

标签: c# winforms

我是c#的初学者,我无法找到如何在winform中一直运行一个简单的函数。我想与主代码同时运行一个函数,这样它就可以一直降低一个统计数据。我怎么能这样做?(对不起,如果这个问题已经存在,我确实搜索过它并且没有提出任何问题)。 G.P。

1 个答案:

答案 0 :(得分:4)

最接近运行方法的方法"所有时间"是通过在线程中运行while(true)循环。但是,这将开始占用CPU资源,并且假设您还希望与方法中的表单进行交互,则必须始终调用主线程,这也将滞后于您的应用程序。

第二种方法是在表单中添加 Timer 组件。您可以设置计时器的间隔,并指定计时器滴答时要调用的方法。该方法将在主线程上运行,因此访问其他控件尽可能简单。但是,不要在方法中运行CPU密集型任务,因为它也会滞后于应用程序。

您还可以使用asyncawait来运行一次while(true)循环并使用await Task.Delay(delay);将其暂停一小段时间,但这不如使用计时器。

接近运行方法的另一个选择是使用事件Application.Idle。它将仅在处理完所有窗口消息时运行该方法,因此不会延迟表单(假设您的方法足够快)。另一方面,您无法保证该方法将以恒定速率运行。

如果您正在使用主循环创建游戏,使用Winforms实际上并不是最佳方法。你可以试试XNA。否则,只需使用具有相当小延迟的计时器。