Skip to content

Commit ad6b637

Browse files
committed
Use await instead of hand-written continuation.
The compiler-generated state machine reduces allocations and performs better in benchmarks.
1 parent e41a69c commit ad6b637

File tree

1 file changed

+2
-6
lines changed

1 file changed

+2
-6
lines changed

src/MySqlConnector/ValueTaskExtensions.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
1-
using System;
1+
using System;
22
using System.Threading.Tasks;
33

44
namespace MySql.Data
55
{
66
internal static class ValueTaskExtensions
77
{
8-
public static ValueTask<TResult> ContinueWith<T, TResult>(this ValueTask<T> valueTask, Func<T, ValueTask<TResult>> continuation)
9-
{
10-
return valueTask.IsCompleted ? continuation(valueTask.Result) :
11-
new ValueTask<TResult>(valueTask.AsTask().ContinueWith(task => continuation(task.GetAwaiter().GetResult()).AsTask()).Unwrap());
12-
}
8+
public static async ValueTask<TResult> ContinueWith<T, TResult>(this ValueTask<T> valueTask, Func<T, ValueTask<TResult>> continuation) => await continuation(await valueTask);
139

1410
public static ValueTask<T> FromException<T>(Exception exception) => new ValueTask<T>(Utility.TaskFromException<T>(exception));
1511
}

0 commit comments

Comments
 (0)