我在 HTTPHandler 中有一个长时间运行的进程,我使用 Async Await .net 4.5 异步执行
这可以按预期完美运行...
如何添加超时,以便在处理时间过长时返回字符串“超时”?
Protected Async Sub button1_Click(sender As Object, e As System.EventArgs)
Dim asyncHandler = New AsyncHandler
Await asyncHandler.ProcessRequestAsync(HttpContext.Current)
Response.Write(asyncHandler.Result)
End Sub
Public Class AsyncHandler
Inherits HttpTaskAsyncHandler
Public Property Result As String
Public Async Function ProcessRequestAsync(context As HttpContext) As Task
Me.Result = Await DoLongRunningProcessAsync(context)
End Function
Private Function DoLongRunningProcessAsync(context As HttpContext) As Task(Of String)
'TODO: add a timeout so that if this takes too long we return "timeout":
Return Task.Run(Of String)(Function() DoLongRunningProcess(context))
End Function
Private Function DoLongRunningProcess(context As HttpContext) As String
'perform long running process....
Return "success"
End Function
End Class