0

我正在尝试在 vb.net 4.5 框架中做一个非常简单的工作;创建并运行一个简单的异步任务,它将符号化(使多个数据库调用异步/并行)。

我正在使用 vs2012 和 vb.net 非常简单的 MVC 应用程序和一个控件。

代码很简单>

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Dim newTask As Task(Of String) = TryPause()
    lblResults2.Text = newTask.Result
End Sub

Public Async Function TryPause() As Task(Of String)
    Await Task.Delay(100)
    Return "hello World"
End Function

注释掉“task.delay”时,代码运行良好。但如果它留在代码内,浏览器就会锁定。

注意:thread.sleep 工作正常....

我错过了什么?

4

1 回答 1

2

正如@SLaks 正确指出的那样,这Result导致了死锁。我在我的博客最近的 MSDN 文章中对此进行了更详细的解释。

于 2013-04-30T00:14:34.490 回答