0

次のように音楽クラスを作成しました。

public class Music
{
    public void StartMusic()
    {                        
        WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
        wplayer.URL = "Resources/music3.MID";
        wplayer.controls.play();                            
    }
}

メイン画面で、次のように新しいスレッドを開始します。

Music music = new Music();
thread = new Thread( new ThreadStart(music.StartMusic));            
thread.Start();

現在、画面を起動すると音楽が再生されますが、問題は、UI を操作してボタンまたはエキスパンダーをクリックするとすぐに、音楽スレッドが停止することです。興味深いことに、MusicPlayer の代わりに SoundPlayer を使用すると、すべて問題なく動作します。SoundPlayer のコードは次のとおりです。

public void StartMusic()
{
    SoundPlayer sound = new SoundPlayer("Resources/music1.wav");
    sound.PlayLooping();
}
4

1 に答える 1

2

startMusic() メソッドの外で WindowsMediaPlayer オブジェクトを作成するだけで問題を解決しました。そのようなばかげた間違い。

于 2012-10-18T17:05:10.360 に答える