Я сделал простой механизм регистрации в моем проекте в офисе.
У меня есть общий журнал (Static C #).
Внутри этого класса у меня есть Синхронизированная очередь, и у нее есть собственный поток.
Тогда внутри этой темы я просто использую AutoresetEvent с вашим собственным определенным WaitTime (я использую 250 мс).
Затем, когда истекает время этого ResetEvent, я собираю то, что в данный момент находится в очереди (используя DeQueue), и записываю каждое в файл.
Вещи, о которых нужно помнить ... Имейте класс или структуру, которая может содержать дату, когда вход вошел, а не время, когда вы записывали на диск, в случае, если вы выберете более длительное время для сна вашего потока.
Если вы хотите, чтобы ваше приложение быстро завершало работу, предоставьте метод, который установит событие, чтобы оно выпало из сна и изящно завершило работу.