我正在創建一個應用程序,該應用程序有一個充滿自定義對象的多維數組,並且當按下按鈕時,需要播放特定於每個對象的聲音。MediaPlayer的線程問題C#
我運行此方法加載的聲音,運行沒有已知問題:
public void setSoundToPlay()
{
OpenFileDialog openFileDiag = new OpenFileDialog();
if ((bool)openFileDiag.ShowDialog())
{
audio = new MediaPlayer();
audio.Open(new System.Uri(openFileDiag.FileName));
}
}
但是當我激活另一種方法來播放聲音:
public void buttonActivated()
{
audio.Play();
}
我得到了System.InvalidOperationException:{"The calling thread cannot access this object because a different thread owns it."}
運行mediaplayer對象的對象嵌套在另一個對象中,是否是問題所在。我嘗試瞭解線程,但沒有取得任何進展。
我還需要,在某些情況下,需要讓所有聲音能夠一次播放。這是這份工作的最佳對象嗎?
哪裏setSoundToPlay被調用?基本上你試圖從UI線程調用audio.Play,但音頻是由另一個線程擁有的 – SpaceghostAli