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

标签 c# winforms

我是c#的初学者,一直找不到如何让一个简单的函数在winform中一直运行。我想在主代码的同时运行一个函数,这样它就可以一直降低一个状态。我该怎么做?(抱歉,如果这个问题已经存在,我确实进行了搜索但一无所获)。 g.p.

最佳答案

“始终”运行方法的最接近方法是在线程中运行 while(true) 循环。然而,这将开始占用 CPU 资源,并且假设您还想在方法中与表单交互,您将不得不一直调用主线程,这也会延迟您的应用程序。

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

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

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

如果您正在创建一个带有主循环的游戏,那么使用 Winforms 确实不是最佳方式。你可以试试 XNA。否则,只需使用具有相当小延迟的计时器即可。

关于c# - 如何让一个简单的函数在c#中一直运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35100062/

相关文章:

c# - 如何在调用 API 之前启动注入(inject)服务?

c# - toast 窗口有时不在前面

C# 替代 VB 代码

c# - 如何自定义项目在 ComboBox 控件中的显示方式?

c# - c#中的动态数组

c# - Dapper 存储过程的表值参数

c# - DataGridView HeaderCell 为数字类型时不显示值

c# - 确定 winforms 应用程序中像素的颜色

c# - .NET 4.0 中的 Assembly.LoadFrom() 权限

c# - Visual Studio 在 Extension VS2012 中设置 TargetFrameworkMoniker