我最近写了以下代码: Task ExecAsync( string connectionString, SqlCommand cmd, Func resultBuilder, CancellationToken cancellationToken = default(CancellationToken) ) { var tcs = new TaskCompletionSource(); SqlConnectionProvider p; try { p = GetProvider( connectionString ); Task openTask = p.AcquireConnectionAsync( cmd, cancellationToken ); openTask .ContinueWith( open => { if( open.IsFaulted ) tcs.SetException( open.Exception.InnerExceptions ); else if( open.IsCanceled ) tcs.SetCanceled(); else { var […]