我对这段代码有疑问。我需要暂停两秒钟才能看到图像。所以我让线程进入睡眠状态,但它不起作用。我需要等待两秒钟,直到我转到下一个值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?
答案 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线程和后台线程的更多示例。