这可能更多是在寻求建议,但请听我说。
我有一个必须在每个预设时间段刷新的对象(时间由用户指定)。如果不是更多,物体的数量很可能达到1000左右。
我提出了三种方法,我想找到使用某些方法的性能问题。
我想到为每个对象使用一个计时器,向它添加和事件,当计时器达到某个值时,触发该事件,将对象的状态设置为Refresh,当下一个数据包进入时,刷新某个对象
==或==
有一个只运行计时器的计时器线程,并且每个滴答数量达到其乘数(10分钟,5分钟等),它将调用具有该倍数的对象并设置刷新标志,并且当数据包进入时,刷新它们。
由于负载,我不确定是否为每个对象添加计时器是个好主意。
答案 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);
}
}