我是c#的初学者,一直找不到如何让一个简单的函数在winform中一直运行。我想在主代码的同时运行一个函数,这样它就可以一直降低一个状态。我该怎么做?(抱歉,如果这个问题已经存在,我确实进行了搜索但一无所获)。 g.p.
最佳答案
“始终”运行方法的最接近方法是在线程中运行 while(true)
循环。然而,这将开始占用 CPU 资源,并且假设您还想在方法中与表单交互,您将不得不一直调用主线程,这也会延迟您的应用程序。
第二种方法是添加一个 Timer 组件到表单。您可以设置定时器的时间间隔,并指定定时器计时时调用的方法。该方法将在主线程上运行,因此访问其他控件尽可能简单。但是,不要在该方法中运行 CPU 密集型任务,因为这也会使应用程序滞后。
您还可以使用 async
和 await
运行一次 while(true)
循环并使用 await Task.Delay( delay);
暂停一小段时间,但这不如使用计时器有效。
另一个接近一直运行方法的选项是使用事件 Application.Idle
。它只会在处理完所有窗口消息时运行该方法,因此不会滞后于表单(假设您的方法足够快)。另一方面,您不能保证该方法将以恒定速率运行。
如果您正在创建一个带有主循环的游戏,那么使用 Winforms 确实不是最佳方式。你可以试试 XNA。否则,只需使用具有相当小延迟的计时器即可。
关于c# - 如何让一个简单的函数在c#中一直运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35100062/