2

で使用NAudioしています

WaveOutEvent Klangwiedergabegeraet;

private void Play(string Dateiname)
{
    Klangwiedergabegeraet = new WaveOutEvent();
    Klangwiedergabegeraet.DeviceNumber = comboBox1.SelectedIndex;
    ISampleProvider StueckchenHalter = null;
    StueckchenHalter = CreateInputStreamS(Dateiname);
    Klangwiedergabegeraet.Init(new SampleToWaveProvider(StueckchenHalter));  
    Klangwiedergabegeraet.Play();
}

private void Cancel()
{
    if (Klangwiedergabegeraet != null)
    {
        Klangwiedergabegeraet.Stop();
        Klangwiedergabegeraet.Dispose();
    }
}

実行Cancel()中は停止しません。使った時

WaveOut Klangwiedergabegeraet;

private void Play(string Dateiname)
{
    Klangwiedergabegeraet = new WaveOut();
    ...
}

private void Cancel()
{
    if (Klangwiedergabegeraet != null)
    {
        Klangwiedergabegeraet.Stop();
        Klangwiedergabegeraet.Dispose();
    }
}

機能した。なぜこれと何を変更するのですか?

PSプロパティがないため、WaveOutEvent代わりに使用しています。WaveOutWaveOutDeviceNumber

4

1 に答える 1

5

GUI以外のスレッドで実行している場合は、これが推奨される方法です。一部のサウンドカードでは信頼できない関数コールバックが選択されるためではWaveOutEventありません。WaveOutまた、プロパティWaveOutがありDeviceNumberます。

于 2012-11-03T15:40:41.103 に答える