同期I/Oバウンド方式(下記)から、async/awaitを使用して非同期にするにはどうすればよいですか?既存のC#同期メソッドを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の例はすべて、*非同期メソッドの先在を推定し、I/Oバウンドの操作を自分でものを作るためのガイダンスを提供しません。
この新しいタスク内でTask.Run()を実行してIobound()を実行できますが、操作がCPUにバインドされていないため、新しいタスクの作成はお勧めしません。
私はasync/awaitを使用したいと思いますが、私はこの方法の変換を進めるこの基本的な問題についてここで取り残されています。この特定の方法の
はなぜちょうど 'ExecuteNonQueryAsync()'を使わないのでしょうか? –
SqlCommandで 'using'を使用してください。 – slugster
Google検索を行うには、あなたのメソッドを飾る方法の例がたくさんあります。タスク<> – MethodMan