线程睡眠进入循环不起作用wp7

时间:2011-12-11 18:13:46

标签: multithreading windows-phone-7 timer

我对这段代码有疑问。我需要暂停两秒钟才能看到图像。所以我让线程进入睡眠状态,但它不起作用。我需要等待两秒钟,直到我转到下一个值i

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?

1 个答案:

答案 0 :(得分:2)

汉斯指出,你正在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线程确定何时添加它。

希望这有一定道理。在stackoverflow上有关于如何处理UI线程和后台线程的更多示例。