每20秒调用一个方法最高效的方法是什么我想调用一个每20秒传递一个参数的方法,例如publicvoidProcessPerson(IPersonperson)我一直在阅读不同的Timer选项,想知道是否有人可以推荐最有效的方法来做到这一点?另外,有没有办法保持参数的强类型化,而不是使用一个必须转换为IPerson的对象?感谢您的帮助。System.Threading.Timer是您所需要的:提供一种以指定时间间隔执行方法的机制。使用TimerCallback委托来指定您希望Timer执行的方法。计时器委托是在构造计时器时指定的,不能更改。此方法不在创建计时器的线程上执行;它在系统提供的ThreadPool线程上执行。还有System.Windows.Forms.Timer:实现一个以用户定义的时间间隔引发事件的计时器。此计时器已针对Windows窗体应用程序进行了优化,并且必须在窗口中使用。此Windows计时器专为使用UI线程执行处理的单线程环境而设计。不要忘记System.Timers.Timer:Timer组件是一个基于服务器的计时器,它允许您指定在应用程序中引发Elapsed事件的重复间隔。基于服务器的Timer设计用于多线程环境中的工作线程。服务器计时器可以在线程之间移动以处理引发的Elapsed事件,使它们在按时引发事件方面比Windows计时器更准确。因此,调查每一个并确定哪一个最适合您的情况。我会选择System.Threading.Timer。请记住,Windows不是实时操作系统,因此无论您选择何种机制,时间上都会有一些差异。你没有说这个函数是否会执行任何类型的UI更新,但是如果你还应该知道回调函数将在不同的线程上执行,那么在某些情况下,比如执行UI更新,你需要采取适当的步骤将请求编组返回到UI线程的操作。要将请求编组回UI线程,您可以执行以下操作对于WinForms,您可以使用Control.Invoke对于WPF,您可以使用Dispatcher.Invoke或异步变体BeginInvoke您可以使用它,只要确保您正在做的一切都是线程安全的。以上就是C#学习教程:每20秒调用一个方法最有效的方法是什么?分享的全部内容,如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——usingSystem.Threading;publicvoidDoStuff(IPersonperson){newTimer(ProcessPerson,person,0,20000);}publicvoidProcessPerson(objectthreadState){IPersonperson=threadStateasIPerson;//doyourstuff}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
