如何設置Unity,以便類可以異步初始化而不阻止其他模塊的加載(僅阻止顯式需要異步類型實例的其他類型)?我正在考慮的類是參考數據緩存,它從數據庫中提取常用數據的快照,並且我需要在讓其他模塊訪問它之前完成預先緩存(如果請求在我的類I中被阻止將迅速阻止主線程並阻止所有其他模塊進行初始化)。這已成爲我有多個這樣的引用數據類如何爲類型/模塊的異步初始化配置Unity
舉例來說更爲重要,說我有一個這樣的類:
public class ProductCache{
public ProductCache(){}
public Initialize(){
// a very slow DB call to fetch frequently used products
Thread.Sleep(30*1000);
}
public Product FindProduct(string productDescription){
/* check cache, if not there try the db */
}
}
如果我調用初始化從構造我會阻塞調用它的線程(來自Unity)30秒鐘,阻止我同時創建其他(類似)類。如果我簡單地將任務放在線程池上,Unity最終會達到需要我的產品緩存的另一個類正在執行其初始化代碼的地步,然後訪問尚未完全初始化的數據結構(在這種情況下,會導致在高速緩存未命中和數據庫的調用來獲取特定的產品,並有可能在30秒內很多這樣的請求)
感謝 奧斯卡
你能提供一些代碼,那就是你正在初始化的類的結構嗎? – onof
增加了一個小例子 – Oskar