AutofacMVC5.0 專案中如何使用多執行緒訪問注入物件?
專案有個操作,對一個表增刪改之后會創建一個新的執行緒去訪問Autofac注入的物件。來操作其他資料。但是因為我使用的是.net MVC 5.0(不是netCore MVC)。對于MVC注冊的那些類的生命周期都是InstancePerRequest()指定每次請求一個周期的。這樣遇到了一個不可跳躍的問題。當新的執行緒啟動后,其實已經脫離了InstancePerRequest()指定的周期了。就導致container.Resolve(cls) 出錯。“無法決議”
請教下各位,有什么好的思路或辦法解決下?
這個是注冊型別的圖片

這個是呼叫出錯的圖片
uj5u.com熱心網友回復:
先寫個服務類,注冊到Autofac,將cls注入到這個服務類,再把這個服務類注入到你的頁面,在這個服務類里寫個方法,在這個方法里啟動task。uj5u.com熱心網友回復:
我就是這么搞的。
uj5u.com熱心網友回復:
直接寫個類,實體化就完事了,為什么非要注入呢?uj5u.com熱心網友回復:
許多程式員有反紀律化、反規范、反編譯檢查、反工程介面、追求萬能、追求“妖”代碼的沖動。
靈活擴展是追求的目標,但是一旦過頭而無法靠譜地編譯檢查錯誤,無法保證發布產品在運行時不會出現型別錯誤、總是無法保證立刻解決bug,那么這類注入系統90%都非常有害。
uj5u.com熱心網友回復:
而且常用功能反復呼叫時可以見到運行效率成百倍地降低,沒經過高并發大用戶環境下對不同框架的性能測驗。uj5u.com熱心網友回復:
這個類注冊到程式中了嘛?uj5u.com熱心網友回復:
已經注冊了的uj5u.com熱心網友回復:
我采用的是批量注冊的方式
uj5u.com熱心網友回復:
技術嘗新。。。哈哈哈哈
uj5u.com熱心網友回復:
對于反射,一向是不得不用才用,盡量少用的原則。也要看專案情況,對性能要求不高的,可以用。否則慎用。公司是土豪的可以用(服務器明顯比一般的好,不在乎多幾臺服務器),無論什么語言的反射都會降低性能,哪怕是一些新語言,象go,反射的性能差得令人發指。是幾百倍的降低性能。uj5u.com熱心網友回復:
兄弟,不是所有系統都走高并發的。。。還有很多內網運行的系統。。。
反射用的少,不過我是技術嘗試。謝謝指點~
uj5u.com熱心網友回復:
是的,你說的很對,很客觀。對于產品而言,高穩定性、高可靠性、高安全性才是首要考慮的目標。不過我是技術嘗試。謝謝指點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/12956.html
標籤:ASP.NET
