C#/ASP.NET - Web 应用程序锁定

标签 c# asp.net synchronization locking

我正在开发 C#/ASP.NET Web 应用程序,并且在很多情况下都需要进行锁定。理想情况下,我希望锁独立运行,因为它们彼此无关。我一直在考虑 [MethodImpl(MethodImplOptions.Synchronized)] 和使用 lock() 的几种方法,但我有一些问题/疑虑。

看起来 MethodImplOptions.Synchronized本质上会执行lock(this)`。如果是这样的话,似乎进入任何同步方法的线程都会阻止所有其他线程进入任何同步方法。是对的吗?如果是这样,那么这还不够细化。到那时,我似乎也可以使用Application.Lock。 (但如果我错了,请纠正我。)

关于lock(),我试图找出应该传入的内容。我是否应该仅为此目的创建一组对象,并将每个对象用于不同的锁?有更好的办法吗?

提前致谢!

最佳答案

我的偏好是专门为锁创建一个对象。

private object lockForSomeResource = new object();

在管理有争议资源的类中。 Jeff Richter 发布了 article我前段时间读到推荐这个。

如果一个锁中有任何代码需要另一个锁,那么您需要仔细考虑将它们设计为层次结构。确保您始终以相同的顺序请求它们。

关于C#/ASP.NET - Web 应用程序锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/125606/

相关文章:

c# - 通过 REST API 删除短信和语音的 Twilio 演示 URL

c# - 如何在 Windows 8 Metro App 中平滑滚动 ScrollViewer?

c# - C# 中的命名锁集合?

java - 在对象上同步似乎没有同步

c# - 将字符串转换为时间并再次返回

java - 同步线程

c# - 调试时读取字符串或正常运行时出现 NullReferenceException

c# - 如何从随机生成的字符中形成组合?

.net - 如何对 . .NET 中的 resx(资源文件)

c# - 如何使用 javascript 获取 HiddenField 值