2011-12-11 46 views
0

我有這段代碼的問題。我需要暫停兩秒才能看到圖像。所以我讓線程進入睡眠狀態,但它不起作用。我需要等待兩秒鐘,直到我傳遞給下一個值i線程睡眠週期doens't工作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線程中休眠。這將阻止UI更新,直到完成for循環完成。確保你在後臺睡眠,然後更新UI線程。這裏是和僞代碼示例

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

請注意,使用BeginInvoke並不保證您的圖像是同時添加/加載的。它將它推送到UI線程,並讓UI線程確定它何時將其添加。

希望這是有道理的。關於如何處理UI線程和後臺線程,還有更多的關於stackoverflow的例子。