|
.NET TIPS WAVEサウンド(.wavファイル)を非同期で再生するには?[2.0のみ、C#、VB]デジタルアドバンテージ 一色 政彦2007/08/16 |
![]() |
|
|
|
「TIPS:WAVEサウンド(.wavファイル)を再生するには?」では、Windows標準のサウンド・ファイル形式として採用されている「WAVE形式ファイル」(以降、.wavファイル)のサウンドを簡単に再生する方法を紹介した。具体的には、SoundPlayerクラス(System.Media名前空間)のPlaySyncメソッドを呼び出すことで.wavファイルを再生する。
このPlaySyncメソッドは(「Sync」というメソッド名からも分かるように)同期呼び出し用のメソッドなので、再生が完了するまでコードの実行が先に進まなかった(=同期的な再生)。だが、SoundPlayerクラスには、PlaySync以外にもメソッドが提供されており、非同期で呼び出して、ほかの処理の実行中にそのバックグラウンドで.wavファイルを再生したりすることもできる(=非同期的な再生)。
本TIPSではその非同期的な再生の方法について紹介する。
非同期呼び出しで.wavファイルを再生するには?
非同期呼び出しで.wavファイルを再生するには、SoundPlayerオブジェクトのPlayメソッドを呼び出せばよい。SoundPlayerオブジェクトを作成するには、コンストラクタに.wavファイルのパスを指定してインスタンス化する。
Playメソッドを呼び出すことにより、新しいスレッドが作成され、そのスレッドを使用して(バックグランドで).wavファイルが再生される。再生中も、(Playメソッドの)呼び出し元のスレッドでは、コードの実行が(Playメソッドで止まらず)先に進む。
次のコードは、実際にPlayメソッドを使って.wavファイルを再生するサンプルのコンソール・アプリケーションだ。
|
||
| .wavファイルを再生するコンソール・アプリケションのプログラム・コード(上:C#、下:VB) |
このプログラムを実行すると、「ジャジャーン」というサウンドが再生されている間に、コードの実行が先に進み、「0.5秒経過」というメッセージが表示される。
なお、SoundPlayerオブジェクトのStopメソッドを呼び出せば、再生中のサウンドを停止できる。
Playメソッドの問題点は、再生が完了した時点が分からないことだ。従って、再生完了を知る必要がある場合には、Playメソッドは使えない。非同期的な再生で、再生完了を管理するには、BackgroundWorkerコンポーネントなどを活用してバックグラウンドで実行される別スレッドを作成し(参考:「TIPS:時間のかかる処理をバックグラウンドで実行するには?」)、そのバックグランド・スレッドの中で同期的な再生(PlaySyncメソッド。参考:「TIPS:WAVEサウンド(.wavファイル)を再生するには?」)を利用すればよい。
また注意点として、SoundPlayerクラスではサウンドを同時に再生できないことが挙げられる。1つの再生が完了するまで次のサウンド再生は待機する仕様になっているようなので注意してほしい。![]()
| 利用可能バージョン:.NET Framework 2.0のみ カテゴリ:クラス・ライブラリ 処理対象:サウンド 使用ライブラリ:SoundPlayerクラス(System.Media名前空間) 関連TIPS:WAVEサウンド(.wavファイル)を再生するには? |
|
||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


