使用时间间隔更新对象

时间:2013-07-19 21:10:16

标签: c# multithreading timer refresh

这可能更多是在寻求建议,但请听我说。

我有一个必须在每个预设时间段刷新的对象(时间由用户指定)。如果不是更多,物体的数量很可能达到1000左右。

我提出了三种方法,我想找到使用某些方法的性能问题。

我想到为每个对象使用一个计时器,向它添加和事件,当计时器达到某个值时,触发该事件,将对象的状态设置为Refresh,当下一个数据包进入时,刷新某个对象

==或==

有一个只运行计时器的计时器线程,并且每个滴答数量达到其乘数(10分钟,5分钟等),它将调用具有该倍数的对象并设置刷新标志,并且当数据包进入时,刷新它们。

由于负载,我不确定是否为每个对象添加计时器是个好主意。

1 个答案:

答案 0 :(得分:0)

我会避免为每个对象添加一个计时器。也许你可以有一个单独的线程负责启动对象的更新。如果您认为这不会导致并发问题,则可以使用Parallel.ForEach对所有人运行并发更新。例如,像:

Thread updateThread = new Thread(updateLoop);
IEnumerable<Updateable> _updateableObjects;
public static void Main()
{
    updateThread.Start();
} 

private static function UpdateLoop()
{
    while (true)
    {
        Parallel.ForEach(_updateableObjects, obj => obj.Update());
        Thread.Sleep(1000);
    }
}