當用戶提交表單時,我需要從5個不同的來源獲取數據。一旦來自這些5的數據被加載,我需要執行一些驗證。異步調用來加載數據並得到通知
如果我等待每個人在進入下一個之前被加載,它會花費太長時間。我想使所有這些調用都是異步的,一旦所有這些調用都被加載,就想要得到通知並繼續進行驗證。我怎樣才能做到這一點?我的方法是這樣的:
public void Submit()
{
var sqlData1 = GetSqlData(1, DateTime.Now.ToString(), 0, 1);
var sqlData2 = GetSqlData(2, DateTime.Now.ToString(), 0, 1);
var sqlData3 = GetSqlData(3, DateTime.Now.ToString(), 0, 1);
var sqlData4 = GetSqlData(4, DateTime.Now.ToString(), 0, 1);
var sqlData5 = GetSqlData(5, DateTime.Now.ToString(), 0, 1);
//Once all data is loaded perform my validation here
}
public List<sqlData> GetSqlData(int dataType, string dateTime, int getLatest, int getArchived)
{
var sqldata = new List<sqlData>();
DbCommandWrapper = Db.GetStoredProcCommandWrapper("sp_loadData");
//add Params
var dataSet = Db.ExecuteDataSet(DbCommandWrapper);
return sqlData;
}
請出示'GetSqlData',是功能異步或同步(是否返回'任務'或'SomeType')?我們還需要看到它,因爲如果您重複使用通話連接,'GetSqlData'可能不是線程安全的。 –
添加上面的GetSqlData。所有的方法都會調用同一個數據庫,並從同一個表中獲取不同類型的數據。 – user3038399
請參閱我想知道您是如何進行實際的數據庫調用的。現在我知道你的方法是同步的,最好的選擇是讓數據庫調用異步,但如果你不顯示如何進行數據庫調用,我不能告訴你如何去做。我也想看看你在哪裏重複使用'SqlConnection'對象,或者如果你在哪裏爲每個請求創建一個新對象。 –