http://sewig.jp/diary/?date=20060624
↑のコードを元に以下のようなコードを書いたのですが、
unsafe public void Wave_generation(double f)
{
try
{
short* wave_data = stackalloc short[44100];
double dr = 2 * Math.PI / (44100.0 / f);
for (int t = 0; t < 11025; t++)
{
*(wave_data + t) = (short)(Math.Sin(dr * t) * 32767);
}

        (中略)

wt.dwFlags = 1;
wt.dwLoops = 1;
wt.dwBytesRecorded = 0;
wt.dwUser = 0;
wt.lpNext = null;
wt.reserved = 0;

windows.waveOutPrepareHeader(hWOut, &wt, (uint)sizeof(wavehdr_tag));
windows.waveOutWrite(hWOut, &wt, (uint)sizeof(wavehdr_tag));
Thread.Sleep(300);
windows.waveOutClose(hWOut);
}
catch { }
}
このコードを連続実行するとtry〜catchで括っているにもかかわらず、何も言わずに
プログラム本体が落ちてしまいます。
これを回避するにはどうしたらいいでしょうか?