设置歌曲延迟10秒播放失效,代码调试求助
MP3延迟10秒播放失效:问题原因及解决方法
问题原因
你写的for循环是无延迟的空循环,计算机执行这个循环的速度极快,几毫秒就能跑完20次迭代,x瞬间就到19,立刻设置了MP3的URL并触发播放,完全起不到10秒延迟的作用。
解决方法
要实现10秒延迟,必须用语言自带的延迟函数来暂停程序执行,而不是靠空循环耗时间。以下是几种常见场景的实现方式:
如果你用的是C#(WinForms/WPF的MediaPlayer控件)
推荐用异步延迟,不会卡住UI界面:
// 注意:包含这段代码的方法需要加上async关键字 await Task.Delay(10000); // 10000毫秒=10秒 mplayerlevel2.URL = "All of you John Legend.mp3";
如果不能用异步,也可以用同步延迟(会阻塞UI,不推荐):
System.Threading.Thread.Sleep(10000); mplayerlevel2.URL = "All of you John Legend.mp3";
如果你用的是C++
#include <thread> #include <chrono> // 延迟10秒 std::this_thread::sleep_for(std::chrono::seconds(10)); mplayerlevel2->URL = "All of you John Legend.mp3";
额外提醒
靠循环计数来模拟延迟的思路本身就不成立,不同性能的计算机执行循环的速度差异极大,根本无法精准控制延迟时长,必须用系统提供的专门延迟API才能实现准确的定时效果。
内容的提问来源于stack exchange,提问作者TheOnion13
相关产品推荐
相关产品推荐

