2017-06-06 65 views
2

我有Asp.net mvc应用程序,我需要全局计数器用于所有用户(和客人)的某种用途。我的意思是任何用户都可以改变它(有时来自不同的线程),但这个计数器对所有这些都是通用的。 所以,在Asp.Net MVC中使用静态变量是一个好主意吗?

1.在我的代码的某处为此创建一个静态变量是好主意吗?

2.是否有可能出现问题?

其他建议?非常感谢!

+0

如果您的应用程序重新启动会发生什么?计数器将重置为0.什么是计数器用于?可能有更好的选择。如果您正在递增计数器,请记住使用“Interlocked.Increment”之类的线程安全机制 - “counter ++”会导致竞争状态。 –

回答

1

它很难在这里说什么。静态本身没有问题。这取决于你如何使用它。正如你所说,你正在把一些全球计数器放在变量中。所以多个线程会修改它;对?确保这个调用是线程安全的。否则计数器将是错误的。

如果这是一些很少被写入并且大部分是只读值,那完全不是问题。

如果这是您在设计时已知的值,那么您最好使用const

您还应该考虑IIS回收应用程序池。在这种情况下,将创建新的应用程序实例并存在两个您的静态变量副本。

如果这一切都不会造成您的问题,那么静态是好的。

相关问题