C# 在对象同步块索引处检查
我想知道在C#中是否有任何东西可以查看对象的同步块索引,甚至同步块本身C# 在对象同步块索引处检查,c#,.net-3.5,locking,compact-framework,clr,C#,.net 3.5,Locking,Compact Framework,Clr,我想知道在C#中是否有任何东西可以查看对象的同步块索引,甚至同步块本身 在Windows CE和.NET Compact Framework 3.5中,我看到了一个间歇性缺陷,在调用Monitor.Exit()时出现ArgumentException(我实际上使用了锁,但它会在编译后的Monitor.Exit()上抛出)。我感觉线程在某个时候被中止了,我想捕获异常并检查锁对象的同步块的状态。抓住这里的要害:创建一个VS应用程序并添加对此同步块可执行文件的引用,然后开始探索它暴露了什么。不过,我不
在Windows CE和.NET Compact Framework 3.5中,我看到了一个间歇性缺陷,在调用
Monitor.Exit()
时出现ArgumentException(我实际上使用了锁
,但它会在编译后的Monitor.Exit()
上抛出)。我感觉线程在某个时候被中止了,我想捕获异常并检查锁对象的同步块的状态。抓住这里的要害:创建一个VS应用程序并添加对此同步块可执行文件的引用,然后开始探索它暴露了什么。不过,我不知道同步块是什么。找到定义的链接了吗?。基本上,创建的每个对象都有一个与之关联的对象开销字段。此字段包含指向此对象的类型对象的指针以及SyncBlock索引。CLR有一个SyncBlock数组,在Monitor.Enter()上,对象的SyncBlock索引与其中一个SyncBlock关联。每个同步块都包含内核对象、拥有线程的ID、递归计数和等待线程计数。请参阅《CLR via C#》(第三版)一书中的第29章“混合线程同步”。抓住这里的要害:创建一个VS应用程序并添加对此同步块可执行文件的引用,然后开始探索它所暴露的一切。不过,我不知道同步块是什么。找到定义的链接了吗?。基本上,创建的每个对象都有一个与之关联的对象开销字段。此字段包含指向此对象的类型对象的指针以及SyncBlock索引。CLR有一个SyncBlock数组,在Monitor.Enter()上,对象的SyncBlock索引与其中一个SyncBlock关联。每个同步块都包含内核对象、拥有线程的ID、递归计数和等待线程计数。请参阅《通过C#实现CLR》(第三版)一书中的第29章“混合线程同步”。