我試圖緩存一些我從數據庫中檢索到的信息。我決定使用靜態列表<>成員來存儲信息。根據我的經驗,我知道在多線程應用程序中使用List <>我需要使用鎖定語句來保護對它的訪問。我是否以完全相同的方式對待我的Asp.Net代碼中的任何代碼?鎖定聲明仍然有效嗎?ASP.Net靜態對象
1
A
回答
2
鎖將工作。請注意,如果有多個工作進程,則最終會有多個版本的列表。他們每個人都將受到自己的鎖保護。
這裏的一個非常實際的危險是,如果您未能釋放鎖定,您的整個Web應用程序可能會掛起。在您的ASP.NET頁面正在執行時,用戶可能會斷開連接;所以要小心在意外時間拋出的異常。
5
圍繞List方法的鎖定語句肯定會起作用,但如果您需要ASP.NET應用程序中的緩存功能,我會建議您使用適用於此功能的Cache類。
0
這取決於您是否要修改列表。這裏有一個很好的討論這個問題:Do i need a lock on a list? C#
相關問題
- 1. Asp.net靜態對象行爲
- 2. ASP.NET MVC - 靜態對象
- 3. 靜態對象
- 4. '靜態' 對象
- 5. 使用asp.net中靜態對象的
- 6. 靜態類對象
- 7. C++ - 非本地靜態對象vs本地靜態對象
- 8. ASP.NET應用程序狀態與靜態對象
- 9. 靜態對象陣列
- 10. 發佈靜態對象
- 11. C#靜態對象引用
- 12. 靜態對象的C++
- 13. 靜態VS新對象
- 14. 靜態對象初始化
- 15. 靜態對象與Visual Studio
- 16. Serialize靜態ArrayList對象
- 17. 靜態全局對象
- 18. .NET 4.0動態對象靜態使用?
- 19. uiscrollview中的靜態和動態對象
- 20. 將靜態類型的對象展開爲動態對象
- 21. Python是否有靜態對象,堆棧對象和堆對象?
- 22. 在asp.net中創建一個靜態對象列表
- 23. 使用nHibernate/ASP.NET緩存一致性與靜態對象
- 24. 靜態對象來訪問數據庫 - asp.net
- 25. C++靜態對象中的類的靜態數據成員和靜態方法?
- 26. PHP:靜態和非靜態函數和對象
- 27. 靜態局部變量和靜態局部對象初始化
- 28. 如何在靜態方法中引用非靜態對象
- 29. 靜態變量ASP.NET
- 30. 從類對象訪問靜態變量
這可能嗎?我的印象是lock(){}保證鎖將被釋放。另外,你是否知道或者至少知道我在哪裏可以找出多久ASP.Net會爲請求創建一個新線程而不是一個全新的過程? – 2009-06-14 18:40:55
同意鎖(){}將保證鎖釋放。您可以在「最大工作進程」下的「應用程序池」設置中配置IIS中的進程數。默認值是1,這意味着只有一個進程。 – Andomar 2009-06-14 18:43:34