У меня есть система, где клиенты могут делать заказы. После оформления заказа у них есть 60 минут на оплату, прежде чем он будет удален. На стороне сервера, когда заказ сделан, я создаю таймер и устанавливаю истекшее время на 60 минут
System.Timer.Timers timer = new System.Timers.Timer(1000*60*60);
timer.AutoReset = false;
timer.Elapsed += HandleElapsed;
timer.Start();
Потому что я хочу иметь возможность распоряжаться таймером, если клиент решит заплатить, и я хочу иметь возможность отменить заказ, если он этого не делает, у меня есть два словаря:
Dictionary<int, Timer> _orderTimer;
Dictionary<Timer, int> _timerOrder;
Затем, когда у клиента оплата, я могу получить доступ к Timer по orderId с помощью O (1) благодаря словарю _orderTimer, а по истечении времени я могу получить доступ к заказу с помощью O (1) благодаря словарю _timerOrder.
Мой вопрос: это хороший подход? Предполагая, что максимальное количество строк, которые я должен сохранить в словаре в один момент, будет 50000?
Может быть, было бы лучше извлечь из класса Timer, добавить свойство OrderId, сохранить все это в List и найти порядок / таймер с помощью linq?
Или, может быть, я должен сделать это по-другому?