|
分類:[C#]
はじめまして。
イベントハンドラ発生時の処理について質問させてください。
[環境]
Windows7 Pro 64bit
Visual Studio2015
[実現したいこと]
コンソールアプリケーションで作成しています。
Media Playerクラスを使用して音声ファイルを再生したり、一時停止したりさせたいのです。
再生は問題なくできたのですが、一時停止はとあるAPIのイベントが発生したときのみ
一時停止させたいのです。
以下のようなソースを書いてみたのですが、一時停止できません。
どこら辺が悪いのかご指摘いただけないでしょうか?
よろしくお願い致します。
== clsTest.cs ==
public clsMediaPlayer m_MediaPlayer;
public clsTest()
{
m_MediaPlayer = new clsMediaPlayer();
m_MediaPlayer.PlayFileOpen(new Uri(@"C:\sample\sample.mp4"));
}
private void CompleteEvent(object sender, object args)
{
// 完了イベント処理
// 一時停止処理
m_MediaPlayer.Pause();
}
== clsMediaPlayer.cs ==
public class clsMediaPlayer
{
// Media Playerクラス
public MediaPlayer m_Player;
/// <summary>
/// コンストラクタ
/// </summary>
public clsMediaPlayer()
{
m_Player = new MediaPlayer();
}
/// <summary>
/// 再生ファイルオープン処理
/// </summary>
/// <param name="a_Uri"></param>
/// <returns></returns>
public virtual void PlayFileOpen(Uri a_Uri)
{
m_Player.Dispatcher.Invoke(new Action(() =>
m_Player.Open(a_Uri)));
}
/// <summary>
/// 再生処理
/// </summary>
public virtual void Play()
{
m_Player.Dispatcher.Invoke(new Action(() =>
m_Player.Play()));
}
delegate void StopAudio();
/// <summary>
/// 一時停止処理
/// </summary>
public virtual void Pause()
{
//m_Player.Dispatcher.BeginInvoke(new Action(() =>
// m_Player.Pause()));
//m_Player.Dispatcher.Invoke(new Action(() =>
// m_Player.Pause()));
m_Player.Dispatcher.BeginInvoke(new StopAudio(m_Player.Pause), null);
}
}
|