哪个是在c#timer或thread中重复调用多个方法的最佳方法?

时间:2016-09-29 06:58:36

标签: c# multithreading timer

for (; ; )
{
    Thread newThread = new Thread(MainWindow.LumEnergyInformation);
    newThread.Start();
    InitializeComponent();
}

定时器:

Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler(LumEnergyInformation);
myTimer.Interval = 10000; // in milliseconds
/myTimer.Start();

2 个答案:

答案 0 :(得分:0)

在这两种情况下,Thread或Timer,您的方法将在不同的线程中执行,与其他线程并行执行。

主要区别在于:

  • 线程将使用专用线程执行任务
  • Timer将使用从线程池中获取的线程,并且该线程仅在该方法运行时才用于该任务。在一个间隔和下一个间隔之间,其他人可以使用相同的线程。

因此,所有这些都取决于您的用例:如果您的应用程序使用大量线程,则Timer可以更高效。如果您调用的方法需要花费大量时间,那么使用Timer而不是Thread将没有任何好处,因为线程不会被回收。

答案 1 :(得分:0)

问题应该是 - 如果使用方法是线程安全的话,选择Timer或Thread的内容。在此,最重要的是要考虑。那么你的方法是否需要任何超出它自己的焦点的东西?是否需要使用大量数据(在许多对象的意义上)或只需要一个?

重要的问题是,主要内容是否可以运行,而不是方法的结果?

如果你能用“是”回答这两个问题,那么就用线程向前走。如果没有,请尝试使用yes来评估回答这两个问题所需的工作量,并前往线程。

线程与计时器的原因

计时器主要只是一个巨大的事件构造。 Timer.Tick是事件驱动的,Timer.End是事件驱动的,依此类推。全部通过基于OS的控制。此外,如果计时器想要执行它的DoSomething,主应用程序必须暂停并执行代码。

因此,如果您的代码是100%独立或线程安全==>跟线程一起去。