我試圖加快我的一些代碼,並行任務的代碼,使多個數據庫訪問
我做2或3讀取一個緩慢的數據庫,我想打這些電話中paralle運行。
FSKWebInterfaceEntities dbSrc = new FSKWebInterfaceEntities();
public void main()
{
var TaskUsr = GetUserAsync(dev);
var TaskOldCompany = GetOldCompanyAsync(dev);
await Task.WhenAll();
var usr = TaskUsr.Result;
var oldCompanyName = TaskOldCompany.Result;
.....
use my two variables to insert a new entry into my localdb
}
private async Task<ut_User> GetUserAsync(ut_UserAPNdevices dev)
{
return dbSrc.ut_User.FirstOrDefault(x => x.UserID == dev.UserID);
}
private async Task<String> GetOldCompanyAsync(ut_UserAPNdevices dev)
{
return dbSrc.ut_User.FirstOrDefault(x => x.UserID == dev.UserID).Company;
}
在我的兩個輔助方法中,它的下劃線是綠色的,並表示沒有等待,因此會同步運行。但我不能返回return await dbSrc.ut_User.FirstOrDefault(x => x.UserID == dev.UserID);
我該如何修改我的代碼,使兩個讀取並行?
什麼是dbSrc?該線程是否安全,並且可以處理2個線程(提示:大多數數據庫組件不是)。 – TomTom
對不起,我忘了寫這個。那麼這是一個EF dbContext – Zapnologica
不可能。對於每個正在運行的操作,您都需要單獨的dbContext - 它們不是線程安全的。 – TomTom