在迭代RouteCollection时我应该GetReadLock()吗?

时间:2014-03-10 10:42:00

标签: c# asp.net .net asp.net-mvc

在自定义RouteTable.Routes.GetReadLock()类中覆盖GetVirtualPath方法时,我对Route的使用存在一些误解。

根据MSDN docs

  

有两种情况您无需调用GetReadLock:   RouteCollection类的公共方法,例如 GetVirtualPath 和    GetRouteData 在内部调用GetReadLock。因此,你没有   在调用公共方法时显式调用GetReadLock   RouteCollection类从集合中检索数据。

由于我正在覆盖GetVirtualPathGetRouteData,似乎不会有任何问题 internall调用 ,除非我这样做。

。NET 3.5 中,以下行顺利运行:

using (RouteTable.Routes.GetReadLock())
{
    // iteration over the Routes
}

.NET 4.5 中,我收到此错误:

Recursive read lock acquisitions not allowed in this mode.

所以问题是:

为了锁定它,我应该生效黑暗魔法,还是Microsoft已经处理了.NET 4.5中的ReadLock()场景?

感谢您分享经验!

0 个答案:

没有答案