gpt4 book ai didi

c# - c#中wav文件播放循环之间的间隔

转载 作者:太空宇宙 更新时间:2023-11-03 23:43:03 25 4
gpt4 key购买 nike

我有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com