diff --git a/src/MySqlConnector/MySqlCommand.cs b/src/MySqlConnector/MySqlCommand.cs index aa3b7db88..c0d158543 100644 --- a/src/MySqlConnector/MySqlCommand.cs +++ b/src/MySqlConnector/MySqlCommand.cs @@ -97,6 +97,7 @@ private MySqlCommand(MySqlCommand other) /// public override void Cancel() => Connection?.Cancel(this, m_commandId, true); +#pragma warning disable CA2012 // OK to read .Result because the ValueTask is completed /// /// Executes this command on the associated . /// @@ -104,16 +105,14 @@ private MySqlCommand(MySqlCommand other) /// For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command. /// For stored procedures, the return value is the number of rows affected by the last statement in the stored procedure, /// or zero if the last statement is a SELECT. For all other types of statements, the return value is -1. - public override int ExecuteNonQuery() => ExecuteNonQueryAsync(IOBehavior.Synchronous, CancellationToken.None).GetAwaiter().GetResult(); + public override int ExecuteNonQuery() => ExecuteNonQueryAsync(IOBehavior.Synchronous, CancellationToken.None).Result; - /// - public override object? ExecuteScalar() => ExecuteScalarAsync(IOBehavior.Synchronous, CancellationToken.None).GetAwaiter().GetResult(); + public override object? ExecuteScalar() => ExecuteScalarAsync(IOBehavior.Synchronous, CancellationToken.None).Result; -#pragma warning disable CA2012 // OK to read .Result because the ValueTask is completed public new MySqlDataReader ExecuteReader() => ExecuteReaderAsync(default, IOBehavior.Synchronous, default).Result; public new MySqlDataReader ExecuteReader(CommandBehavior commandBehavior) => ExecuteReaderAsync(commandBehavior, IOBehavior.Synchronous, default).GetAwaiter().GetResult(); -#pragma warning restore CA2012 +#pragma warning restore CA2012 // OK to read .Result because the ValueTask is completed /// public override void Prepare() @@ -294,9 +293,9 @@ protected override DbDataReader ExecuteDbDataReader(CommandBehavior behavior) => /// For stored procedures, the return value is the number of rows affected by the last statement in the stored procedure, /// or zero if the last statement is a SELECT. For all other types of statements, the return value is -1. public override Task ExecuteNonQueryAsync(CancellationToken cancellationToken) => - ExecuteNonQueryAsync(AsyncIOBehavior, cancellationToken); + ExecuteNonQueryAsync(AsyncIOBehavior, cancellationToken).AsTask(); - internal async Task ExecuteNonQueryAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) + internal async ValueTask ExecuteNonQueryAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) { Volatile.Write(ref m_commandTimedOut, false); this.ResetCommandTimeout(); @@ -312,9 +311,9 @@ internal async Task ExecuteNonQueryAsync(IOBehavior ioBehavior, Cancellatio } public override Task ExecuteScalarAsync(CancellationToken cancellationToken) => - ExecuteScalarAsync(AsyncIOBehavior, cancellationToken); + ExecuteScalarAsync(AsyncIOBehavior, cancellationToken).AsTask(); - internal async Task ExecuteScalarAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) + internal async ValueTask ExecuteScalarAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) { Volatile.Write(ref m_commandTimedOut, false); this.ResetCommandTimeout();