2016-09-29 38 views
0

主题:哪种方法可以在c#timer或thread中重复调用多个方法?

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

当然,这取决于你的方法做了什么?如果它需要很长时间,你只需要一遍又一遍,或者它的速度很快,并且你想要它x秒或?什么? – BugFinder

+0

在x(60)秒内以及如何在定时器中实现多种方法 –

回答

0

在这两种情况下,螺纹或定时器,你的方法将只是在不同的线程中执行,在与其他线程并行。

的主要区别是:

  • 线程将使用专用线程
  • 定时器将使用线程池,线程而占用的线程将被用于该任务只有当法任务运行。在一个间隔和下一个间隔之间,其他人可以使用同一个线程。

因此,一切都归结于您的用例:如果您的应用程序使用大量线程计时器可以更高效。如果您调用的方法需要很长时间,那么使用Timer代替Thread将没有好处,因为线程不会被回收。

0

问题应该是 - 如果使用方法是线程安全,应该选择Timer或Thread。因为这是最重要的考虑。那么你的方法是否需要自己专注的东西?它需要使用大量数据(在许多对象的意义上)还是仅仅使用一个?

重要的问题是,没有方法的结果可以运行的主要内容?

如果你可以回答两个问题都是,那么就用线程进行直线前进。如果不是这样,tryx会评估为回答这两个问题所需的努力,并且回答问题。

原因线程VS定时器

定时器是primarly只是一个巨大的事件结构。 Timer.Tick是事件驱动的,Timer.End是事件驱动的等等。全部都是通过基于操作系统的控制。另外,如果计时器想要执行它的DoSomething,你的主应用程序必须停止并执行代码。

所以,如果你的代码是100%独立或线程安全==>去与线程。

相关问题