[發明專利]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.szxzyx.cn/pat/books/200910046864.6/2.html,轉載請聲明來源鉆瓜專利網。





