Async / ConfigureAwait(True)不等待 - WebService

时间:2017-08-23 10:57:28

标签: vb.net asynchronous async-await

我有一个调用函数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

0 个答案:

没有答案
相关问题