2015-09-15 26 views
0

我需要從MediaElement幾次獲得CurrentState。我創建了一個簡單的功能,看起來像這樣:MediaElement.CurrentState檢索System.Exception

private string getCurrentState(MediaElement m) 
    { 
     return m.CurrentState.ToString(); 
    } 

但每次調用這個函數時我得到這個:

類型的異常「System.Exception的」發生在MyProject的,但沒有在用戶代碼中處理。

附加信息:應用程序調用了一個接口,該接口被編組爲另一個線程。

(例外gfrom HRESULT:0x8001010E(RCP_E_WRONG_THREAD))

我一直在研究這個問題,正如我的理解,它試圖檢索時,通常是在CurrentStateMediaOpened事件一直前被解僱。事實上,這不適合我的情況,因爲此功能在此之後被調用。然而我把CurrentState屬性稱爲CurrentState屬性,我得到了同樣的異常,而且這種情況最奇怪的是有時可以工作,有時候不會,所以我一直不知道代碼中出了什麼問題:S

有沒有人有任何想法如何解決它?

回答

1

您正在嘗試從非UI線程獲取狀態。您應該重新設計您的代碼,以便不從後臺線程(Task)與MediaElement進行交互。 或者您可以將getCurrentState方法調用包裝到Despatcher中

CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, 
<lambda for your code which should run on the UI thread>); 
+0

非常感謝!這已經完全解決了我的問題:) –

相關問題