当用户提交表单时,我需要从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'对象,或者如果你在哪里为每个请求创建一个新对象。 –