0

新しいスレッドでサウンドを再生しようとしています。これは、再生中に他のサウンドがサウンドを中断しないようにするためです。

しかし、それは機能しません。新しいスレッドはバックグラウンドで実行されますが(私は推測します)、後で再生されるサウンドがスレッドを中断します。

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();
}

邪魔にならずに色んな音を鳴らしたい。

4

2 に答える 2

1

スレッドを使う必要はないと思います。一度に16個のSoundEffectInstancesを持つことができます。十分ではありませんか?

この例を確認してください。

それらは3つのSoundEffectインスタンスを保持するだけです。

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

いくつかのイベントでそれらを再生します。

于 2012-10-20T12:06:07.573 に答える
0

スレッドを使用する必要がある場合は、BackgroundWorkerを使用してください。それは素晴らしくて簡単です!

于 2012-10-23T13:00:35.647 に答える