2
我有Asp.net mvc應用程序,我需要全局計數器用於所有用戶(和客人)的某種用途。我的意思是任何用戶都可以改變它(有時來自不同的線程),但這個計數器對所有這些都是通用的。 所以,在Asp.Net MVC中使用靜態變量是一個好主意嗎?
1.在我的代碼的某處爲此創建一個靜態變量是好主意嗎?
2.是否有可能出現問題?
其他建議?非常感謝!
我有Asp.net mvc應用程序,我需要全局計數器用於所有用戶(和客人)的某種用途。我的意思是任何用戶都可以改變它(有時來自不同的線程),但這個計數器對所有這些都是通用的。 所以,在Asp.Net MVC中使用靜態變量是一個好主意嗎?
1.在我的代碼的某處爲此創建一個靜態變量是好主意嗎?
2.是否有可能出現問題?
其他建議?非常感謝!
它很難在這裏說什麼。靜態本身沒有問題。這取決於你如何使用它。正如你所說,你正在把一些全球計數器放在變量中。所以多個線程會修改它;對?確保這個調用是線程安全的。否則計數器將是錯誤的。
如果這是一些很少被寫入並且大部分是隻讀值,那完全不是問題。
如果這是您在設計時已知的值,那麼您最好使用const
。
您還應該考慮IIS回收應用程序池。在這種情況下,將創建新的應用程序實例並存在兩個您的靜態變量副本。
如果這一切都不會造成您的問題,那麼靜態是好的。
如果您的應用程序重新啓動會發生什麼?計數器將重置爲0.什麼是計數器用於?可能有更好的選擇。如果您正在遞增計數器,請記住使用「Interlocked.Increment」之類的線程安全機制 - 「counter ++」會導致競爭狀態。 –