2017-06-06 61 views
2

我有Asp.net mvc應用程序,我需要全局計數器用於所有用戶(和客人)的某種用途。我的意思是任何用戶都可以改變它(有時來自不同的線程),但這個計數器對所有這些都是通用的。 所以,在Asp.Net MVC中使用靜態變量是一個好主意嗎?

1.在我的代碼的某處爲此創建一個靜態變量是好主意嗎?

2.是否有可能出現問題?

其他建議?非常感謝!

+0

如果您的應用程序重新啓動會發生什麼?計數器將重置爲0.什麼是計數器用於?可能有更好的選擇。如果您正在遞增計數器,請記住使用「Interlocked.Increment」之類的線程安全機制 - 「counter ++」會導致競爭狀態。 –

回答

1

它很難在這裏說什麼。靜態本身沒有問題。這取決於你如何使用它。正如你所說,你正在把一些全球計數器放在變量中。所以多個線程會修改它;對?確保這個調用是線程安全的。否則計數器將是錯誤的。

如果這是一些很少被寫入並且大部分是隻讀值,那完全不是問題。

如果這是您在設計時已知的值,那麼您最好使用const

您還應該考慮IIS回收應用程序池。在這種情況下,將創建新的應用程序實例並存在兩個您的靜態變量副本。

如果這一切都不會造成您的問題,那麼靜態是好的。

相關問題