我对这段代码有疑问。 我需要暂停两秒钟才能看到图像。 所以我让线程进入睡眠状态,但它不起作用。 我需要等待两秒钟,直到我转到下一个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 票数: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线程确定何时添加它。

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

  ask by jpmd translate from so

未解决问题?本站智能推荐: