gpt4 book ai didi

c# - 如何记录计算机之间的相对时间?

转载 作者:行者123 更新时间:2023-12-02 12:28:25 27 4
gpt4 key购买 nike

我需要在不同的计算机上独立记录事件并重建这些事件相对于彼此发生的顺序。解决方案要求每台计算机相对独立;他们无法直接相互交谈或与单一来源交谈。

我最初的解决方案记录了每台机器上的时间,但是由于不同机器上的时间可能不同,并且一天中的时间可能会发生变化,所以这并没有完全解决我的问题。我决定在机器 (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> 的最佳方式是什么?从每台机器并将其合并到一个列表中,并按顺序排列事件?

最佳答案

如果两台机器通过网络连接,您的程序可以询问另一台机器现在是什么时间。这样,机器 A 上的程序就可以询问 A 和 B 上的时间,然后记录这两个时间。

您提到时间可能会在白天发生变化(大概是用户更改了时间)。您可以使用 Win32.TimeChanged 事件检测到这一点。

关于c# - 如何记录计算机之间的相对时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/827473/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com