我试图包装我的" GetNonEmptyString"在一个任务中的功能,所以我可以在异步方法中等待它。以下代码返回正确的字符串,但为什么没有执行任何Task.Delay语句?
Public Async Function GetDataAsync() As Task(Of String)
Dim result = Await GetStringAsync()
Return result
End Function
Public Function GetStringAsync() As Task(Of String)
Return Task(Of String).Factory.StartNew(Function()
Task.Delay(100000)
Return GetNonEmptyString()
End Function)
End Function
Private Function GetNonEmptyString() As String
Task.Delay(100000)
Return "notEmpty"
End Function
答案 0 :(得分:4)
Task.Delay
不等同于Thread.Sleep
。
Task.Delay
会返回Task
,这会在延迟后完成。为了实际等待任务完成,您必须Await
返回的任务,调用其.Result
属性或.Wait()
方法或使用.ContinueWith
延续。