线程不在后台运行

时间:2012-10-20 10:53:11

标签: c# multithreading windows-phone-7 xna

我正在尝试在新线程中播放声音,以便其他声音在播放时不会中断它。

但它不起作用。虽然新线程在后台运行(我假设),但之后播放的声音会中断它。

ParameterizedThreadStart pts;
        Thread t;

private void playStreak(Object p)
        {
            SoundEffect sound = SoundEffect.FromStream(Application.GetResourceStream(new Uri("SOUNDFX/BOMB.wav", UriKind.Relative)).Stream);
            SoundEffectInstance instance = sound.CreateInstance();
            instance.Play();
        }

private void playAsThread()
{
     pts = new ParameterizedThreadStart(playStreak);
     t = new Thread(pts);
     t.Name = "Streak sound!";
     t.Start();
}

我希望在不中断对方的情况下播放各种声音。

2 个答案:

答案 0 :(得分:1)

我认为你不需要使用线程。您可以在一刻拥有16个SoundEffectInstances。还不够吗?

检查this example

他们只持有三个SoundEffect个实例。

    private SoundEffect coyoteSound;
    private SoundEffect birdSound;
    private SoundEffect ambienceSound;

并通过某种活动来播放它们。

答案 1 :(得分:0)

如果确实需要使用线程,请使用BackgroundWorker。这很好,很容易!