2011-12-11 4 views
0

이 코드 조각에 문제가 있습니다. 이미지를보기 위해 2 초의 일시 중지가 필요합니다. 스레드를 잠자기 상태로 만들었지 만 작동하지 않습니다. i의 다음 값을 전달할 때까지 2 초 정도 기다려야합니다.스레드 잠 들어있는 동안 작동하지 않습니다 wp7

for (int i = 0; i < media_count; i++) 
{ 
    if (type_by_order[i].ToString().Equals("video")) 
     Play_Graphics(name_file_by_order[i]); 
    if (type_by_order[i].ToString().Equals("image")) 
     ImageReadDecode(name_file_by_order[i]); 
    Thread.Sleep(2000); 
} 

무엇이 잘못 되었습니까? 이것은 Windows phone 7에서 작동하지 않습니까?

+0

관찰 한 동작을 설명 할 수 있습니까? 예를 들어, 그것은 당신의 수면을 무시합니까? 아니면 너무 오래 기다리고 있니? – Shahbaz

+0

오래 기다리는 중 .. 그리고 나서 모든 과정을 보여줍니다 .. – jpmd

+0

죄송합니다. 저는 당신이 사람들에게 문제를 해결하기 위해 더 많은 정보를 제공해야한다는 것을 알려 드리고자합니다. 내 다음 제안은 코드에있는 언어로 질문에 태그를다는 것입니다 (Java입니까?). 그렇게하면 질문에 더 많은 사람들을 끌어 모을 수 있습니다. – Shahbaz

답변

2

Hans가 지적했듯이 UI 스레드에서 자고 있습니다. 이렇게하면 for 루프가 완료 될 때까지 UI가 업데이트되지 않습니다. 백그라운드에서 잠자기 후 UI 스레드에서 업데이트하십시오. 여기이며, 의사 코드 예를 BeginInvoke를 사용하여 이미지를 동시에 순서로로드/추가되었는지 garantee하지 않는

BackgroundWorker bgw = new BackgroundWorker(); 
    bgw.DoWork += (sender, e) = { 
    for loop { 
     Deployment.Current.Thread.BeginInvoke(() => { 
      ImageReadDecode 
     }); 
     Thread.Sleep(2000); 
    } 
    } 
    bgw.RunAsync(); 

참고. 그것을 UI 스레드에 푸시하고 UI 스레드가 추가 할시기를 결정하게합니다.

희망적입니다. UI 스레드와 백그라운드 스레드를 처리하는 방법에 대한 stackoverflow에 대한 예제가 충분합니다.

관련 문제