我有一个调用函数GetCard
的Web服务CreateRaces
。在CreateRaces中我保存新对象。没有异步,这很好。但是,当我调用task1
CommitAsync
的异步函数时,该方法会执行并返回响应而不会触及下一个断点。我试图通过Task.Run,ConfigureWait(true)和
With HttpContext.Current
bulk.Setup etc...
End With
但似乎没有任何效果。
bulk.Setup
- CommitAsync
调用返回Task
的第三方dll(SqlBulkTools)。
看起来它适用于不同的线程。
任何想法如何配置它以便我执行该功能,我可以点击下一个断点sw.Stop()
?
<HttpGet>
<AllowAnonymous>
Public Async Function GetCard(cardurl As String) As HttpResponseMessage
Try
Dim oRace As New RaceCard(cardurl)
oRace.DoWork()
Dim oRC As New RaceController
await oRC.CreateRaces(oRace.Races)
Return Request.CreateResponse(HttpStatusCode.OK, True.ToJson)
Catch ex As Exception
Return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex)
End Try
End Function
CreateRaces功能
Public Async Function CreateRaces(ByVal t As List(Of Race)) As Threading.Tasks.Task(Of Boolean)
Try
'Proceed only if list has items
If t.Count > 0 Then
Dim bulk As New BulkOperations()
Dim sw As New Stopwatch()
Dim oCon As New SqlClient.SqlConnection(DotNetNuke.Common.Utilities.Config.GetConnectionString)
sw.Start()
Dim task1 = Await bulk.Setup(Of Race).ForCollection(t).WithTable("ArbiRace").AddAllColumns().BulkInsertOrUpdate().SetIdentityColumn(Function(i) i.RaceID).MatchTargetOn(Function(m) m.RaceName).CommitAsync(oCon).ConfigureAwait(True)
sw.Stop()
Dim swt = sw.ElapsedMilliseconds
End If
Return True
Catch ex As Exception
Dim s As String
s = ex.ToString
Return False
End Try
End Function