2013-04-29 1 views
0

vb.net 4.5 프레임 워크에서 매우 간단한 작업을 수행하려고합니다. 심볼화할 간단한 비동기 작업 (Asyncrnously/Parallel)을 생성하고 실행하십시오.vb.net task.delay가 브라우저를 잠급니다.

나는 매우 간단한 MVC 애플 리케이션과 하나의 컨트롤을 vs2012와 vb.net을 사용하고 있습니다. 은 "task.delay는"밖으로 언급 할 때 코드는 간단하다

>

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 

코드는 잘 실행됩니다. 그러나 코드가 코드 안에 있으면 브라우저가 잠 깁니다.

주의 사항 : 잘 작동 Thread.sleep를 ....

내가 무엇을 놓치고?

+1

'작업'을 동 기적으로 대기하려면'.Result'를 사용하지 마십시오. 이로 인해 코드가 중단되는 교착 상태가 발생합니다. – SLaks

+0

감사합니다. 현재 여러 프로세스를 병렬로 실행하고 결과를 주 호출자에게 반환하려고합니다. 나는 thread.sleep을 상징하는 taskfactory로 성공했다. 하지만 나는 일을 할 수 없습니다 .delay가 작동합니다. 거의 백그라운드 스레드로 가고 호출자에게 다시 돌아 오지 않는 것처럼 보입니다. 나는 webforms/mvc에서 이것을 시도하고있다. 지연을 증명하지 않고 실제 데이터베이스 호출을 시작하려고합니다. –

답변

2

@SLaks가 올바르게 지적한대로 Result이 교착 상태의 원인입니다. 이 내용은 on my blogin a recent MSDN article으로 자세히 설명합니다.

+0

예 !!!!! 고마워 ..... 너는 남자 야! –

관련 문제