这些运行时事件捕获有关监视锁争用的信息,例如使用 Monitor.Enter 或 C# lock 关键字。 有关如何将这些事件用于诊断目的的详细信息,请参阅 日志记录和跟踪 .NET 应用程序。
ContentionStart_V2 事件
此事件在监视器锁争用开始时发出。
| 引发事件的关键字 | 水平 |
|---|---|
ContentionKeyword(0x4000) |
信息性 (4) |
下表显示了事件信息。
| 事件 | 事件 ID | 在 |
|---|---|---|
ContentionStart_V2 |
81 | 监视器锁争用开始。 |
| 字段名称 | 数据类型 | 描述 |
|---|---|---|
Flags |
win:UInt8 |
托管 0;本机 1。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
LockObjectID |
win:Pointer |
锁定对象的地址。 |
LockOwnerThreadID |
win:Pointer |
拥有锁的线程的地址。 |
ContentionStop_V1 事件
此事件在监视器锁争用结束时发出。
| 引发事件的关键字 | 水平 |
|---|---|
ContentionKeyword(0x4000) |
信息性 (4) |
下表显示了事件信息。
| 事件 | 事件 ID | 在 |
|---|---|---|
ContentionStop_V1 |
91 | 监视器锁争用结束。 |
| 字段名称 | 数据类型 | 描述 |
|---|---|---|
Flags |
win:UInt8 |
托管 0;本机 1。 |
ClrInstanceID |
win:UInt16 |
CoreCLR 实例的唯一 ID。 |
DurationNs |
win:Double |
争用的持续时间(以纳秒为单位)。 |