@@ -2361,7 +2361,10 @@ private Task CopyColumnsAsync(int col, TaskCompletionSource<object> source = nul
23612361 // This is in its own method to avoid always allocating the lambda in CopyColumnsAsync
23622362 private void CopyColumnsAsyncSetupContinuation ( TaskCompletionSource < object > source , Task task , int i )
23632363 {
2364- AsyncHelper . ContinueTaskWithState ( task , source , this ,
2364+ AsyncHelper . ContinueTaskWithState (
2365+ task ,
2366+ source ,
2367+ state : this ,
23652368 onSuccess : ( object state ) =>
23662369 {
23672370 SqlBulkCopy sqlBulkCopy = ( SqlBulkCopy ) state ;
@@ -2373,9 +2376,7 @@ private void CopyColumnsAsyncSetupContinuation(TaskCompletionSource<object> sour
23732376 {
23742377 source . SetResult ( null ) ;
23752378 }
2376- } ,
2377- connectionToDoom : _connection . GetOpenTdsConnection ( )
2378- ) ;
2379+ } ) ;
23792380 }
23802381
23812382 // The notification logic.
@@ -2510,10 +2511,11 @@ private Task CopyRowsAsync(int rowsSoFar, int totalRows, CancellationToken cts,
25102511 }
25112512 resultTask = source . Task ;
25122513
2513- AsyncHelper . ContinueTaskWithState ( readTask , source , this ,
2514- onSuccess : ( object state ) => ( ( SqlBulkCopy ) state ) . CopyRowsAsync ( i + 1 , totalRows , cts , source ) ,
2515- connectionToDoom : _connection . GetOpenTdsConnection ( )
2516- ) ;
2514+ AsyncHelper . ContinueTaskWithState (
2515+ readTask ,
2516+ source ,
2517+ state : this ,
2518+ onSuccess : ( object state ) => ( ( SqlBulkCopy ) state ) . CopyRowsAsync ( i + 1 , totalRows , cts , source ) ) ;
25172519 return resultTask ; // Associated task will be completed when all rows are copied to server/exception/cancelled.
25182520 }
25192521 }
@@ -2535,14 +2537,13 @@ private Task CopyRowsAsync(int rowsSoFar, int totalRows, CancellationToken cts,
25352537 }
25362538 else
25372539 {
2538- AsyncHelper . ContinueTaskWithState ( readTask , source , sqlBulkCopy ,
2539- onSuccess : ( object state2 ) => ( ( SqlBulkCopy ) state2 ) . CopyRowsAsync ( i + 1 , totalRows , cts , source ) ,
2540- connectionToDoom : _connection . GetOpenTdsConnection ( )
2541- ) ;
2540+ AsyncHelper . ContinueTaskWithState (
2541+ readTask ,
2542+ source ,
2543+ state : sqlBulkCopy ,
2544+ onSuccess : ( object state2 ) => ( ( SqlBulkCopy ) state2 ) . CopyRowsAsync ( i + 1 , totalRows , cts , source ) ) ;
25422545 }
2543- } ,
2544- connectionToDoom : _connection . GetOpenTdsConnection ( )
2545- ) ;
2546+ } ) ;
25462547 return resultTask ;
25472548 }
25482549 }
@@ -2611,7 +2612,10 @@ private Task CopyBatchesAsync(BulkCopySimpleResultSet internalResults, string up
26112612 source = new TaskCompletionSource < object > ( ) ;
26122613 }
26132614
2614- AsyncHelper . ContinueTaskWithState ( commandTask , source , this ,
2615+ AsyncHelper . ContinueTaskWithState (
2616+ commandTask ,
2617+ source ,
2618+ state : this ,
26152619 onSuccess : ( object state ) =>
26162620 {
26172621 SqlBulkCopy sqlBulkCopy = ( SqlBulkCopy ) state ;
@@ -2621,9 +2625,7 @@ private Task CopyBatchesAsync(BulkCopySimpleResultSet internalResults, string up
26212625 // Continuation finished sync, recall into CopyBatchesAsync to continue
26222626 sqlBulkCopy . CopyBatchesAsync ( internalResults , updateBulkCommandText , cts , source ) ;
26232627 }
2624- } ,
2625- connectionToDoom : _connection . GetOpenTdsConnection ( )
2626- ) ;
2628+ } ) ;
26272629 return source . Task ;
26282630 }
26292631 }
@@ -2677,7 +2679,10 @@ private Task CopyBatchesAsyncContinued(BulkCopySimpleResultSet internalResults,
26772679 { // First time only
26782680 source = new TaskCompletionSource < object > ( ) ;
26792681 }
2680- AsyncHelper . ContinueTaskWithState ( task , source , this ,
2682+ AsyncHelper . ContinueTaskWithState (
2683+ task ,
2684+ source ,
2685+ state : this ,
26812686 onSuccess : ( object state ) =>
26822687 {
26832688 SqlBulkCopy sqlBulkCopy = ( SqlBulkCopy ) state ;
@@ -2689,9 +2694,7 @@ private Task CopyBatchesAsyncContinued(BulkCopySimpleResultSet internalResults,
26892694 }
26902695 } ,
26912696 onFailure : static ( Exception _ , object state ) => ( ( SqlBulkCopy ) state ) . CopyBatchesAsyncContinuedOnError ( cleanupParser : false ) ,
2692- onCancellation : static ( object state ) => ( ( SqlBulkCopy ) state ) . CopyBatchesAsyncContinuedOnError ( cleanupParser : true ) ,
2693- connectionToDoom : _connection . GetOpenTdsConnection ( )
2694- ) ;
2697+ onCancellation : static ( object state ) => ( ( SqlBulkCopy ) state ) . CopyBatchesAsyncContinuedOnError ( cleanupParser : true ) ) ;
26952698
26962699 return source . Task ;
26972700 }
@@ -2738,7 +2741,10 @@ private Task CopyBatchesAsyncContinuedOnSuccess(BulkCopySimpleResultSet internal
27382741 source = new TaskCompletionSource < object > ( ) ;
27392742 }
27402743
2741- AsyncHelper . ContinueTaskWithState ( writeTask , source , this ,
2744+ AsyncHelper . ContinueTaskWithState (
2745+ writeTask ,
2746+ source ,
2747+ state : this ,
27422748 onSuccess : ( object state ) =>
27432749 {
27442750 SqlBulkCopy sqlBulkCopy = ( SqlBulkCopy ) state ;
@@ -2756,9 +2762,7 @@ private Task CopyBatchesAsyncContinuedOnSuccess(BulkCopySimpleResultSet internal
27562762 // Always call back into CopyBatchesAsync
27572763 sqlBulkCopy . CopyBatchesAsync ( internalResults , updateBulkCommandText , cts , source ) ;
27582764 } ,
2759- onFailure : static ( Exception _ , object state ) => ( ( SqlBulkCopy ) state ) . CopyBatchesAsyncContinuedOnError ( cleanupParser : false ) ,
2760- connectionToDoom : _connection . GetOpenTdsConnection ( )
2761- ) ;
2765+ onFailure : static ( Exception _ , object state ) => ( ( SqlBulkCopy ) state ) . CopyBatchesAsyncContinuedOnError ( cleanupParser : false ) ) ;
27622766 return source . Task ;
27632767 }
27642768 }
@@ -2859,7 +2863,10 @@ private void WriteToServerInternalRestContinuedAsync(BulkCopySimpleResultSet int
28592863 {
28602864 source = new TaskCompletionSource < object > ( ) ;
28612865 }
2862- AsyncHelper . ContinueTaskWithState ( task , source , this ,
2866+ AsyncHelper . ContinueTaskWithState (
2867+ task ,
2868+ source ,
2869+ state : this ,
28632870 onSuccess : ( object state ) =>
28642871 {
28652872 SqlBulkCopy sqlBulkCopy = ( SqlBulkCopy ) state ;
@@ -2902,9 +2909,7 @@ private void WriteToServerInternalRestContinuedAsync(BulkCopySimpleResultSet int
29022909 }
29032910 }
29042911 }
2905- } ,
2906- connectionToDoom : _connection . GetOpenTdsConnection ( )
2907- ) ;
2912+ } ) ;
29082913 return ;
29092914 }
29102915 else
@@ -3029,14 +3034,9 @@ private void WriteToServerInternalRestAsync(CancellationToken cts, TaskCompletio
30293034 _parserLock . Wait ( canReleaseFromAnyThread : true ) ;
30303035 WriteToServerInternalRestAsync ( cts , source ) ;
30313036 } ,
3032- connectionToAbort : _connection ,
30333037 onFailure : static ( _ , state ) => ( ( StrongBox < CancellationTokenRegistration > ) state ) . Value . Dispose ( ) ,
30343038 onCancellation : static state => ( ( StrongBox < CancellationTokenRegistration > ) state ) . Value . Dispose ( ) ,
3035- #if NET
30363039 exceptionConverter : ex => SQL . BulkLoadInvalidDestinationTable ( _destinationTableName , ex )
3037- #else
3038- exceptionConverter : ( ex , _ ) => SQL. BulkLoadInvalidDestinationTable ( _destinationTableName , ex )
3039- #endif
30403040 ) ;
30413041 return ;
30423042 }
@@ -3085,10 +3085,11 @@ private void WriteToServerInternalRestAsync(CancellationToken cts, TaskCompletio
30853085
30863086 if ( internalResultsTask != null )
30873087 {
3088- AsyncHelper . ContinueTaskWithState ( internalResultsTask , source , this ,
3089- onSuccess : ( object state ) => ( ( SqlBulkCopy ) state ) . WriteToServerInternalRestContinuedAsync ( internalResultsTask . Result , cts , source ) ,
3090- connectionToDoom : _connection . GetOpenTdsConnection ( )
3091- ) ;
3088+ AsyncHelper . ContinueTaskWithState (
3089+ internalResultsTask ,
3090+ source ,
3091+ state : this ,
3092+ onSuccess : ( object state ) => ( ( SqlBulkCopy ) state ) . WriteToServerInternalRestContinuedAsync ( internalResultsTask . Result , cts , source ) ) ;
30923093 }
30933094 else
30943095 {
@@ -3169,9 +3170,7 @@ private Task WriteToServerInternalAsync(CancellationToken ctoken)
31693170 {
31703171 sqlBulkCopy . WriteToServerInternalRestAsync ( ctoken , source ) ; // Passing the same completion which will be completed by the Callee.
31713172 }
3172- } ,
3173- connectionToDoom : _connection . GetOpenTdsConnection ( )
3174- ) ;
3173+ } ) ;
31753174 return resultTask ;
31763175 }
31773176 }
0 commit comments