异常“从未同步的代码块调用了对象同步方法。” 在MVC中

Jes*_*rks 1 c# asp.net-mvc

我正在从我的数据库加载一些值以显示给我的网站用户。由于这些值不会改变太多,我将它们加载到静态/共享对象中。

为了确保多个用户不会同时修改同一个对象,我使用Monitor.Enter(和Monitor.Exit) 来锁定/阻止这些值的加载。

不幸的是,这在从 .NET 中的 MVC 视图调用时不起作用,因为它会引发此异常:

从未同步的代码块调用对象同步方法。

有没有办法通过 MVC 做到这一点,而无需完全改变我的代码设计?

Ser*_*tol 5

您看到此错误是因为您很可能在 async 方法中使用 Monitor。但是您不应该,可以在 async/await 中的监视器中阅读有关此问题的更多信息

您可以简单地用SemaphoreSlimAutoResetEvent替换 Monitor