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  可以把没有做完的事情放在这里做,但是还是尽量使其操作越少越好!!!

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