我知道它DateTime.UtcNow没有相对较高的精度(10-15 ms分辨率).
这对我来说是一个问题,因为在我的日志文件中,我想要更好的解决方案来解决竞争条件.
问题是:如何以比DateTime.UtcNow提供的更精确的方式获得当前日期/时间?
到目前为止,我见过的唯一解决方案是:https://stackoverflow.com/a/15008836/270348.这是解决问题的合适方法吗?
您可以使用Stopwatch更精确的时间测量.然后,您可以让每个日志条目记录从第一个操作开始的时间.如果它很重要,你可以记录DateTime第一个操作并因此计算剩下的时间,但听起来只是因为第一个操作开始时的滴答/纳秒就足够了.
如果您想添加跟踪,您可以像这里一样编写自己的 ETW 跟踪提供程序。那么你就不需要关心时间是如何获取的。Windows 内核会确保计时准确且事件顺序正确。
如果您不想编写自己的 ETW 提供程序,您可以使用作为 Nuget 包提供的 EventSource,它也允许您从 .NET 4.0 使用它。更多信息在他的博客上有万斯莫里森。
使用 ETW 事件时,您可以通过 Windows 性能工具包免费获得强大的跟踪分析器。作为额外的好处,您可以在所有流程中进行系统范围的分析,而且影响最小。
这允许您有选择地为您编写的每个事件添加调用堆栈,这在您想要追踪谁两次调用您的 Dispose 方法时非常有用。

| 归档时间: |
|
| 查看次数: |
1132 次 |
| 最近记录: |