- ベストアンサー
C#SundPlayerで同期再生が再生途中で停止
C#SoundPlayerクラスの同期再生PlaySyncメソッドで再生すると仕様と違って再生終了を待たずに曲の途中で停止してしまいます。何が原因なのか判断できずにとても困っております。ちなみに非同期再生のPlayメソッドでは上手く仕舞いまで再生できます。原因に心当たりの方がいらっしゃいましたら教えて頂けないでしょうか?
- みんなの回答 (1)
- 専門家の回答
C#SoundPlayerクラスの同期再生PlaySyncメソッドで再生すると仕様と違って再生終了を待たずに曲の途中で停止してしまいます。何が原因なのか判断できずにとても困っております。ちなみに非同期再生のPlayメソッドでは上手く仕舞いまで再生できます。原因に心当たりの方がいらっしゃいましたら教えて頂けないでしょうか?
お礼
ありがとうございました。演奏時間の長めの推定値を求め、その値を設定してもそれより短い時間で停止してしまうので、非同期再生で凌ぐことにしました。
補足
早速のご回答ありがとうございました。以下に示すソースで実行しています。現在はコメント部を生かして凌いでいます。ご検討かたよろしくお願いもうしあげます。 System.Media.SoundPlayer player = null; ・ ・ try { player = new System.Media.SoundPlayer(waveFile); int time = player.LoadTimeout; //Console.WriteLine("player.LoadTimeout={0}", time); //以下は演奏時間の推測 //FileInfo finf = new FileInfo(waveFile); //double dln = (double)finf.Length; ; //time = (int)((dln / 55514000.0) * 311000.0 + 5000.0); //player.LoadTimeout = time + 100 ; //Console.WriteLine("player.LoadTimeout={0}", time); player.Load(); while (true){if(player.IsLoadCompleted){Console.WriteLine("player.Load completed", time);break;}} player.PlaySync(); //これを止めて以下の非同期再生にすると上手く終わる //player.Play(); //Thread.Sleep(time); } catch (Exception ex){Console.WriteLine("例外発生(SoundPlayComplete)" + ex.Message);}