Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在对象同步块索引处检查_C#_.net 3.5_Locking_Compact Framework_Clr - Fatal编程技术网

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应用程序并添加对此同步块可执行文件的引用,然后开始探索它暴露了什么。不过,我不

我想知道在C#中是否有任何东西可以查看对象的同步块索引,甚至同步块本身


在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章“混合线程同步”。