你在asp.net中必須小心哪種多線程問題?asp.net中的多線程
8
A
回答
0
程序化緩存是我立即想到的一個領域。這是一個很好的功能,需要謹慎使用。由於它是跨請求共享的,因此在更新它之前必須鎖定它。
我會檢查的另一個地方是任何代碼訪問文件系統,如寫入日誌文件。如果一個請求對文件具有讀寫鎖定,則其他併發請求如果處理不當,將會出錯。
6
有一件事需要注意的事情過期(我認爲httpContext做的),如果你使用它作爲「火和忘記」的操作記住,如果asp.net清理代碼運行之前突然您的操作完成後,您將無法訪問某些信息。
2
如果這是一個Web服務,你應該考慮線程池。太多的線程會讓您的應用程序停滯不前,因爲它們最終會開始競爭CPU時間。
這是文件還是網絡IO?如果是這樣,你還應該考慮使用asynchronous IO。編程可能會更加痛苦,但您不必擔心會一次產生太多的線程。
9
從ASP.NET頁面的代碼隱藏產生線程是有風險的,因爲工作進程偶爾會得到回收,線程將會死亡。
如果由於網頁上的用戶操作而需要啓動長時間運行的進程,最好的方法是在MSMQ中關閉一條消息,並使用單獨的後臺服務監視隊列。只要服務完成任務,服務就可以完成,網頁幾乎可以立即完成工作。你可以通過異步調用web方法來完成同樣的事情,但不要依賴Web方法完成工作時的響應。從代碼隱藏的角度來看,它需要是一個快速而又容易忘記的問題。
0
IIS配置中是否沒有25個線程總數的限制?我相信至少在IIS 6中。如果你超過這個限制,有趣的事情(閱讀:loooooooong響應時間)可能會發生。
0
根據您的需要,就多線程而言,您是否考慮過來自客戶端的產卵請求。使用AJAX產生請求是安全的,然後在回調中處理結果。或者使用一種服務作爲後臺機制,每隔X分鐘運行一次,並以這種方式在後臺運行進程。
相關問題
- 1. ASP.NET多線程
- 2. WCF + asp.net +多線程
- 3. ASP.NET MVC多線程
- 4. Asp.net - 多線程C#
- 5. asp.net上的多線程
- 6. asp.net mvc的多線程2
- 7. 在多線程/線程池中訪問asp.net會話線程
- 8. 多線程與單線程與Asp.net 3.5
- 9. ASP.net中的多線程最佳方法
- 10. asp.net中的多線程問題
- 11. 文本多線程在ASP.NET
- 12. asp.net多線程頁面
- 13. asp.net中的線程程序
- 14. 多線程在asp.net中有意義嗎?
- 15. java中有多線程的多線程
- 16. asp.net緩存的多線程鎖的webpart
- 17. ASP.NET MVC3 HttpPost + jQuery的ajax的多線程?
- 18. ASP.Net MVC 4 - 一個多線程的
- 19. asp.net上的多線程下載
- 20. ASP.NET中的線程權限
- 21. 在asp.net中的線程
- 22. asp.net中的線程(C#)
- 23. 多類中的多線程
- 24. 多線程 - 類中的異步線程
- 25. 單線程中的多線程
- 26. ASP.Net webservice中的多線程 - 主線程完成後會發生什麼?
- 27. ASP.Net多線程Web服務調用
- 28. ASP.NET MVC多線程,值得嗎?
- 29. asp.net多線程與計時器
- 30. ASP.NET和多線程最佳實踐
+1好問題 – Nick 2009-06-30 14:16:47
關於問題的權威性博客(儘管是日期)是Phil Haacks http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks- in-asp-net.aspx /運行Quartz.NET和HangFire等後臺進程的框架很多。如果你能忍受90秒的限制,你甚至可以使用QueueBackgroundWorkItem。如果你使用Azure,Web Jobs或雲服務。 – RickAndMSFT 2014-08-20 00:06:27