Мне нужно самостоятельно записывать события на разных компьютерах и восстанавливать, в каком порядке эти события произошли относительно друг друга. Решение требует, чтобы каждый компьютер был относительно независимым; они не могут напрямую общаться друг с другом или с одним источником.
Мое первоначальное решение записывало время на каждой машине, но, поскольку время может быть разным на разных машинах и может меняться в течение дня, это не полностью решило мою проблему. Я решил поделиться со всеми машинами всякий раз, когда машина (1) запускает процесс или (2) меняет системные часы.
Итак, с каждой машины я получаю журнал, полный этих
public class Activity {
DateTime TimeOccurred { get; set; }
string Description { get; set; }
}
Всякий раз, когда (1) или (2) происходит выше, я добавляю активность в журнал и транслирую ее другим машинам, которые добавляют ту же активность в свой журнал, причем TranslatedTime - их собственное время:
public class TimeSynchronization : Activity {
string SourceMachine { get; set; }
DateTime TranslatedTime { get; set; }
}
Таким образом, машина A будет иметь (по порядку):
TimeSynchronization "started" at 3:00 am.
Activity "asked a question" at 3:05 am.
TimeSynchronization from machine B at 3:05 am.
TimeSynchronization "clock changed" at 3:03 am.
Activity "received an answer" at 3:04 am.
И машина B будет иметь (по порядку):
TimeSynchronization "started" at 3:05 am.
TimeSynchronization "clock changed" at 3:06
Так что мне нужно восстановить тот же порядок и время этих событий, например:
On machine A: TimeSynchronization "started" at 0:00
On machine A: Activity "asked a question" at 0:05
On machine B: TimeSynchronization "started" at 0:05
On machine A: TimeSychronization from machine B at 0:05
On machine A: TimeSynchronization "clock changed" at 0:06
On machine B: TimeSynchronization "clock changed" at 0:06
On machine A: Activity "received an answer" at 0:07
Как лучше всего взять List<Activity>
с каждого компьютера и объединить его в один список с событиями по порядку?