两个进程之间的时间同步-.NET

两个进程之间的时间同步-.NET,.net,timing,clock,.net,Timing,Clock,我有两个用.NET编写的程序,它们通过USB与采集硬件通信。有一个设备是异步的,但它告诉我记录数据点的时间只有微秒。另一个是同步的,也就是说,我知道每个数据点是什么时候被记录的 我有.NET程序与这些接口。到目前为止,我一直使用DateTime。现在为了确定采集何时开始,我使用异步设备报告的毫秒/微秒时间和同步设备的样本数来计算每个数据点的计算机时间(通过向开始时间添加刻度) 现在我必须同步两次采集的时间。这两个程序运行在同一台计算机上,但正如我所读到的,DateTime。根据一些文档,现在的精

我有两个用.NET编写的程序,它们通过USB与采集硬件通信。有一个设备是异步的,但它告诉我记录数据点的时间只有微秒。另一个是同步的,也就是说,我知道每个数据点是什么时候被记录的

我有.NET程序与这些接口。到目前为止,我一直使用DateTime。现在为了确定采集何时开始,我使用异步设备报告的毫秒/微秒时间和同步设备的样本数来计算每个数据点的计算机时间(通过向开始时间添加刻度)

现在我必须同步两次采集的时间。这两个程序运行在同一台计算机上,但正如我所读到的,DateTime。根据一些文档,现在的精度为10到15毫秒(尽管似乎有几个人可以取得比这更好的效果,尽管可以说只是因为他们在线程之后立即调用它。Sleep)

据我所知,我目前的方法是:

  • 用户在设备1上开始采集。日期时间。现在被称为
  • 用户在设备2上开始采集。日期时间。现在被称为
  • 可以给我15毫秒的采集开始时间

    我可以考虑在程序启动时,使用秒表记录程序启动和采集启动之间的准确时间。但这只有在我将两个程序合并在一起时才能起作用


    还有其他想法吗?

    秒表有一个GetTimeStamp()方法,您可以使用该方法进行同步。它基本上使用它里面的Windows API。使用秒表,您最终会得到一个类型为long的滴答数字。如果您想转换为秒,频率是机器上每秒的滴答数。

    我以为您只是使用秒表来测量经过的时间,而不是获得实际的时间戳?我还没有使用秒表。我在考虑将DateTime.Now和StopWatch.getappeased结合起来,这样我只会得到一次现在的不确定性,之后的每一次,我都会得到getappeased的准确性。我只是想知道是否有更好的方法。如果你是这么做的,我想有很多文章都是关于这件事的,把DateTime和秒表结合起来。不过这有点棘手,因为它需要经常重新同步。