以下方法用于填充数据集 .
如果我们以同步方式调用此方法,它工作正常 .
但是现在我们需要以异步方式调用此方法 . 所以我需要做哪些更改,以便下面的方法应该正常工作而不会出现任何问题 .
public DataSet Filldata(string ProcName,string TableName){DataSet ds = new DataSet(); try {da = new SqlDataAdapter(ProcName,con); if(con.State!= ConnectionState.Open){con.Open(); } da.SelectCommand.CommandTimeout = 15000; da.Fill(ds,TableName); } catch(Exception ex){ErrorMsg = ex.Message.ToString(); HMISLogger.logger.Error(ex.Message.ToString()“”ProcName,ex); } finally {con.Close(); da.Dispose(); } return ds; }
3 回答
可能你应该使用SqlDataReader而不是SqlDataAdabter,因为SqlDataReader具有Async功能
请参阅以下链接以获取样本或更多信息
https://msdn.microsoft.com/en-us/library/1a674khd(v=vs.110).aspx
你可以使用如下的东西,返回作为异步操作的Task
您可以使用async / await关键字将其称为以下
您可以声明类级静态对象,如下所示
并修改你的方法如下,As Fill方法负责连接打开和关闭我们可以在它之前添加lock语句 .