[英]Custom .wav file in c# windows form application every second
我在播放4秒长的波浪时遇到了一些麻烦...我目前正在做的是运行计时器....
因此将计时器设置为一秒钟的间隔...因此,每隔一秒钟,我就会跑起来检查一下...如果检查失败。.我播放一个wav文件,说:“恢复工作!” ...
当前,它暂停计时器。...所以我听到“恢复工作”,但是在播放时,我已经失去了4秒钟的计数时间,因为它仍在播放声音。...这是我的电话和我的职能...
playSimpleSound();
private void playSimpleSound()
{
SoundPlayer simpleSound = new SoundPlayer(@"c:\Windows\Media\shortwav.wav");
simpleSound.PlaySync();
}
如果我将它们切换出来,则每次点击时它都会真正播放...。我只听到wav文件的开头。
playSimpleSound();
private void playSimpleSound()
{
SoundPlayer simpleSound = new SoundPlayer(@"c:\Windows\Media\shortwav.wav");
simpleSound.Play();
}
所以我的问题是
如何继续计数并播放整个wav文件? 我应该算出wav文件有多长时间,然后继续并对其进行mod计数吗?
这样我基本上只每隔x秒钟播放文件一次?
因此,基本上每次都只调用playound函数,但是在该函数内部计算它被访问了多少次并仅在第4秒播放?
您可以执行以下操作...在其他线程上播放声音并切换标志:
public partial class Form1 : Form
{
private SoundPlayer simpleSound;
private bool SoundPlaying = false;
public Form1()
{
InitializeComponent();
this.Load += Form1_Load;
}
void Form1_Load(object sender, EventArgs e)
{
simpleSound = new SoundPlayer(@"c:\Windows\Media\shortwav.wav");
simpleSound.LoadAsync();
}
private void timer1_Tick(object sender, EventArgs e)
{
Console.WriteLine("Tick");
if (true) // check your condition
{
this.PlaySound();
}
}
private void PlaySound()
{
if (!this.SoundPlaying)
{
Console.WriteLine("Starting Sound");
this.SoundPlaying = true;
Task.Factory.StartNew(() => {
simpleSound.PlaySync();
this.SoundPlaying = false;
});
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.