C# 如何在C语言中设置歌曲的持续时间#

C# 如何在C语言中设置歌曲的持续时间#,c#,web-applications,soundplayer,C#,Web Applications,Soundplayer,我有一个应用程序,在指定的时间播放特定的歌曲,作为选择的结果 我已经可以播放这些歌曲了,但我无法设置持续时间 public void PlaySound() { int i = 0; foreach (string musicFile in musicFiles) { Thread thrStopMusic = new Thread(ThreadTimer); player.Soun

我有一个应用程序,在指定的时间播放特定的歌曲,作为选择的结果

我已经可以播放这些歌曲了,但我无法设置持续时间

    public void PlaySound()
    {
        int i = 0;

        foreach (string musicFile in musicFiles)
        {
            Thread thrStopMusic = new Thread(ThreadTimer);
            player.SoundLocation = musicFile;
            musicExecuteTime = GetMusicDuration[i];
            player.Play();
            thrStopMusic.Start();
            thrStopMusic.Abort();
            i++;
        }
    }

 public void ThreadTimer()
    {
       Thread.Sleep(musicExecuteTime * 1000);
       StopSound();
    }

我正在使用SoundPlayer类。

也许我没有正确理解您的意图,但是为什么您甚至使用线程来计时(我猜
StopSound()
不是合适的调用方法)?为什么不只是:

...
player.Play();
Thread.Sleep(musicExecuteTime * 1000);
player.Stop();
...

我想你可以这样做
Play()
使用新线程来播放文件,因此在调用
Stop()
之前,您只需将线程“暂停”一段时间


你说我不能设定持续时间是什么意思?你到底想达到什么目的?我需要从一个SoundROund播放()开始,并在一定的设定时间(以秒为单位)后停止()。我试着用线,用睡眠来做这件事。但不要认为它工作得很好。检查下面的答案。基本上,你要做的是启动一个新的线程,它什么也不做,只是休眠这个线程,而不是你所在的“主”线程。只需调用主循环中的Thread.Sleep(time*1000):)我使用的是一个方法,因为我有一个在后台实时运行的图形。如果您使用此代码,我的所有系统将挂起15秒。如果
音乐文件中的文件应连续播放,则您可能应该将整个
播放声音
代码移动到一个线程中,这样您的主线程就不会被阻塞。这可以工作,但我的应用程序处于非活动状态。我有一个显示实时信息的仪表板。我正在Page_中进行播放调用加载是否应该在其他位置进行?您应该在另一个线程中运行playsound,如上所述。是您应该添加apt/cleanup的示例。
public void PlaySound()
{
    int i = 0;

    foreach (string musicFile in musicFiles)
    {
        player.SoundLocation = musicFile;
        player.Play();
        Thread.Sleep(1000 * GetMusicDuration[i])
        player.Stop();
        i++;
    }
}