【发布时间】:2018-05-10 01:27:32
【问题描述】:
从同步 I/O 绑定方法开始(如下),如何使用 async/await 使其异步?
public int Iobound(SqlConnection conn, SqlTransaction tran)
{
// this stored procedure takes a few seconds to complete
SqlCommand cmd = new SqlCommand("MyIoboundStoredProc", conn, tran);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter returnValue = cmd.Parameters.Add("ReturnValue", SqlDbType.Int);
returnValue.Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
return (int)returnValue.Value;
}
MSDN 示例都假定 *Async 方法已经存在,并且没有为您自己制作一个用于 I/O 绑定操作的指南提供指导。
我可以在该新任务中使用 Task.Run() 并执行 Iobound(),但不鼓励创建新任务,因为该操作不受 CPU 限制。
我想使用 async/await,但我被困在如何继续转换此方法的基本问题上。
【问题讨论】:
-
为什么不直接使用
ExecuteNonQueryAsync()? -
请在您的 SqlCommand 上使用
using... -
google 搜索一下,其实有很多关于如何装饰你的方法是等待以及使用任务的例子
-
@CamiloTerevinto 我可以问你为什么你经常编辑我的答案的格式吗?
{的位置(是否换行)是个人喜好,更改它不会增加任何价值。 -
@Evk 如果能够阅读和必须滚动之间存在差异,这不是个人喜好
标签: c# .net asynchronous async-await