【问题标题】:async function - Task Factory异步函数 - 任务工厂
【发布时间】:2014-12-19 09:43:19
【问题描述】:

我试图将我的“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

【问题讨论】:

    标签: .net vb.net asynchronous async-await


    【解决方案1】:

    Task.Delay 不等同于Thread.Sleep

    Task.Delay 返回一个Task,它将在延迟后完成。为了真正等待任务完成,您必须 Await 返回的任务,调用其 .Result 属性或 .Wait() 方法或使用 .ContinueWith 延续。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      相关资源
      最近更新 更多