在C#中使普通方法异步

Ali*_*aji 5 c# asynchronous

我在C#中有一个方法:

public DataSet OpenSqlQuery(string SqlQuery)
{
    con = new SqlConnection(connection_string);
    con.Open();
    var sqlc = new SqlCommand(SqlQuery, con);
    da = new SqlDataAdapter(sqlc);
    var ds = new DataSet();
    da.Fill(ds);
    con.Close();
    return ds;
}
Run Code Online (Sandbox Code Playgroud)

现在,我想将其作为异步方法,以便可以通过调用它await。所以我将其更改为:

public async Task<DataSet> OpenSqlQuery(string SqlQuery)
{
    con = new SqlConnection(connection_string);
    con.Open();
    var sqlc = new SqlCommand(SqlQuery, con);
    da = new SqlDataAdapter(sqlc);
    var ds = new DataSet();
    await da.Fill(ds);
    con.Close();
    return ds;
}
Run Code Online (Sandbox Code Playgroud)

我设置await之前da.Fill(ds)是因为在这一行,程序等待服务器。但是该函数显示此错误:

'int'不包含'GetAwaiter'的定义,也找不到找不到接受'int'类型的第一个参数的扩展方法'GetAwaiter'(您是否缺少using指令或程序集引用?)

如何使该方法异步?

PS:主要目标是按以下方式调用此方法:

Dataset ds = await objConnect.OpenSqlQuery(query);
Run Code Online (Sandbox Code Playgroud)

PS:这个问题与可能重复的问题之间的区别是,这篇文章是关于将现有的同步方法转换为异步的,而另一篇是关于异步方法的。