我有 4 秒的 wav 文件。我可以循环播放
System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.Stream = Properties.Resources.ringtone;
player.PlayLooping();
但是在再次播放 wav 之前我需要 2 秒的间隔。
我的意思是4秒(有声)+ 2秒(无声音)+ 4秒(有声)等等...
怎么可能。
最佳答案
因此,在进行了一系列线程处理和线程池工作之后,我清楚地意识到,如果您有一个长时间运行的线程,则应该避免从线程池中“窃取”线程。 .NET(以及最近的 .NET Core)中的线程池主要用于可能存在大量多线程工作的快速异步工作。它们是专门为此设计的,窃取一个可能会导致各种问题,特别是因为其他一些重要工作无法从线程池中获得空闲线程来完成它的工作,坦率地说,您应该避免它。
每当您需要长时间运行的操作(例如应用程序的生命周期)时,最好手动生成一个新线程并使用它。只是不要忘记将其标记为后台线程,这样就可以了。
using System.Threading;
using System.Threading.Tasks;
System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.Stream = Properties.Resources.ringtone;
private void LoopSong()
{
while(true)
{
player.Play();
Thread.Sleep(2000);
}
}
var thread = new Thread(LoopSong)
{
IsBackground = true
};
thread.Start();
下面的代码是错误的,请勿使用
using System.Threading;
using System.Threading.Tasks;
System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.Stream = Properties.Resources.ringtone;
Task.Run(()=>
{
while (true)
{
player.Play();
Thread.Sleep(2000);
}
});
如果你不想阻塞gui,你需要放入后台线程。
关于c# - C#中wav文件播放循环之间的间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28407866/