MediaCenter開發整理(三)C#部分

其實MediaCenter的模式於asp.net的方式非常相似,C#代碼相當於MCML代碼部分的後臺。其實這一部分的內容不需要了解很多就可以上手寫MC的程序了,掃一遍API也就基本上可以了。

貼上這部分的整理結果。

MediaCenter編程C#

MCMLC#通過.net properties進行通信

MCMl不能使用C#的變量,只能定義properties   含有getset

它應該是基於ModeItem並且在set裏應該包含FirePropertyChanged

 

Session class

程序的入口類  維護狀態和數據以及一些選項

 

media center程序創建時將創建兩個類

第一個是Session class繼承ModeItem它將維持在一個media center程序的整個生命週期  

第二個是一個繼承了IAddinModuleIAddInEntryPoint的類

它將實現IAddinModuleIntializeUnintialize兩個接口

         IAddInEntryPointLaunch一個接口

 

IntializeUnintialize

在程序啓動和結束時調用,Intialize裏不要做過多的加載工作,它會阻塞顯示直到它執行完返回

甚至一個小的操作都可能導致Media Center報告程序被鎖死

在保存一些數據的時候會經常發生這種找不到程序的情況

Launch

新的MCML要被顯示或者一些參數傳遞給程序是將調用詞函數

同樣的 ,這個函數裏不要做太多的操作

一般情況是新建一個PageSession後就立即返回

 

PageSession

每個程序至少包含一個,負責跟蹤程序進程

經常用到的一個是HistoryOrientedPageSession

它將記錄用戶的瀏覽軌跡等很多信息並且支持backspace之類的回退命令

事實上用戶的界面顯示是從這個類開始的  通過調用接口Navigate

 

一個程序需要的基本類和接口代碼:

Public class Base:IAddInModule, IAddInEntryPoint

{

       Public static HistoryOrientedPageSeeion History;

       Public void Intialize(Dictionary<String, Objiect> appInfo,

Dictionary<String,Object> entryPointInfo)

       {}

       Public void Unintialize()

       {}

       Public void Launch(AddInHost host)

{

       History = new HistoryOrientedPageSession();

       History.Go(“resx://Assm………”);

}

}

 

程序被拉起時,先調用Intialize  然後調用Launch

創建一個HistoryOrientedPageSession   開始記錄管理我們的路徑

然後進入mcml

最後程序退出時  將調用Unintialize  可以把沒有做完的事情放在這裏做,但是還是儘量使其操作越少越好!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章