[发明专利]Applet托管函数的方法无效
申请号: | 200910046864.6 | 申请日: | 2009-03-02 |
公开(公告)号: | CN101826004A | 公开(公告)日: | 2010-09-08 |
发明(设计)人: | 陈榕;宋世军 | 申请(专利权)人: | 上海科泰世纪科技有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 201203 上海市张江高*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | applet 托管 函数 方法 | ||
技术领域
本发明是关于一种在计算机构件编程时托管函数的方法,尤其是指在通过Applet线程托管函数的方法。
背景技术
Elastos平台上利用Applet进行编程时,可能希望得到Applet结束的通知,在Applet即将结束退出的时刻做些资源清理的工作,或者当Applet结束时需要设置一些标志、发送消息通知等。
Applet使用Main方法作为其入口,但Main方法返回退出并不表示Applet退出,而只是进入Applet的消息循环,Applet仍在运行,这对于编写Applet构件的用户来说,想在Applet结束退出时清理Main方法里分配的资源变得比较困难,不过也可以在Main里面注册线程托管函数,当Main线程退出时会调用线程托管函数,借此间接获取Applet退出的通知。
但如果是某个DLL或者子模块,它无法预测被哪个线程调用,又或者调用层次较深较复杂,在Applet的Main线程式上托管函数的做法就不方便了。
发明内容
鉴于以上内容,有必要提供一种Applet托管函数的方法。
该Applet托管函数的方法包括步骤:在Applet的主线程上创建一个链表类对象并在该链表类对象上实现一个托管函数链表;注册需托管的函数;根据该Applet的句柄将所注册需托管的函数的指针插入到上述托管函数链表;当Applet主线程运行结束时,根据该Applet句柄获得托管函数链表;遍历该托管函数链表,并按照函数注册时的顺序的相反顺序调用所有被托管的函数。
本发明Applet托管函数的方法可以使用户设置一个或若干个托管函数,这些托管函数估在Applet结束即将退出的时刻被调用,用户可以在Applet范围内任意设置代码托管,当线程执行到托管代码时,会在当前Applet上设置相应的记录,当Applet退出用户的代码,进入准备结束状态时,会自动调用先前托管的函数。因此,即便是某个子模块的程序员也不必关心自己的模块会被哪个线程调用、何时被调用,只要设置Applet托管函数即可在Applet结束的时刻获得控制权,得以执行预期的操作。
这对于需要在Applet结束这一特殊时刻执行一些资源清理、设置状态、保存数据等工作的构件和代码来说,本发明的“Applet托管函数”可以极大地方便用户,减少程序的复杂度和耦合度,使代码和各个模块之间的关系更简单和清晰。
附图说明
图1是本发明较佳实施例的Applet托管函数的方法的流程图。
图2是本发明Applet Main线程和链表类对象CAutoRun及托管函数链表之间的关系示意图。
具体实施方式
如图1所示,是本发明较佳实施例的Applet托管函数的方法的流程图。
步骤S200,在Applet的主线程(Main)上创建一个链表类对象CAutoRun,在这个创建的链表类对象CAutoRun上实现一个托管函数链表。并在该Applet上保留该链表类对象CAutoRun的对象指针。该链表类对象CAutoRun是一个具有链表功能的类,具有普通链表的功能,比如:插入和遍历,其用于管理被托管的函数。
例如用下面一段程序代码AA实现了在Applet的主线程(Main)上创建一个链表类对象CAutoRun的功能:
Class CAutoRun//用于管理被托管函数
{......}
Applet TFoo{ //假设在一个名为TFoo的Applet里
Public:
......
CAutoRun m_autoRun;//其定义了一个CAutoRun类型的对象作为成
员
}
参照图2所示,其中Main1是Applet的主线程,CAutoRun链表类对象10是在该Main1上创建的用于管理被托管函数的一个链表类对象CAutoRun,托管函数链表11是在该链表类对象CAutoRun上实现的一个托管函数链表。
步骤S204,用户调用CApplet::AtFinish注册需被托管的函数。
步骤S206,用户获得该Applet的句柄以便获取所述的托管函数链表11。在Elastos平台上,所有的代码都分别运行于各个Applet,基于Applet的特性,所有运行于Applet内的线程的TLS(Thread LocalStorage,线程本地存储或线程局部存储)上都保存着Applet的句柄,因此,用户可以随时获得Applet的句柄。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海科泰世纪科技有限公司,未经上海科泰世纪科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910046864.6/2.html,转载请声明来源钻瓜专利网。