CN100514300C - 一种共用窗口的进程调用方法 - Google Patents
一种共用窗口的进程调用方法 Download PDFInfo
- Publication number
- CN100514300C CN100514300C CNB200610090154XA CN200610090154A CN100514300C CN 100514300 C CN100514300 C CN 100514300C CN B200610090154X A CNB200610090154X A CN B200610090154XA CN 200610090154 A CN200610090154 A CN 200610090154A CN 100514300 C CN100514300 C CN 100514300C
- Authority
- CN
- China
- Prior art keywords
- subtask
- window
- task
- subtasks
- invoked
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种共用窗口的进程调用方法,包括:按照一个任务的各子功能将该任务划分为多个功能彼此独立的子任务;当其中的一个子任务运行时,该子任务进程调用其他子任务,并将自己的窗口句柄传递给被调用的子任务;被调用的子任务运行时,其进程根据接收到的窗口句柄,将调用该子任务的进程的窗口作为其父窗口来创建自己的窗口。采用本发明方法,可降低系统耦合度,当一个子任务的进程崩溃时,不会影响整个任务的执行,提高了系统运行效率。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种共用窗口的进程调用方法。
背景技术
在计算机应用领域中,实现某一任务的程序代码被编译为一个可执行文件,每个可执行文件运行于内存中的不同空间,称为进程。
目前,在计算机应用领域,多为针对一个任务编译一个可执行文件,通过执行该文件可完成该任务所包含的多个子任务。多个子任务模块之间可能有功能重叠,即多个子任务模块的部分功能是相同的。此时,将多个子任务模块完成相同功能的共用代码进行函数封装,编译为动态链接库(Dynamic LinkLibrary,DLL)文件。当某个子任务需要实现共用功能时,调用该DLL文件。子任务模块在调用DLL文件时,通过函数接口向其传递参数,DLL文件利用该参数运行处理后生成结果值,并传回调用该DLL的子任务模块。
现有技术的这种任务执行方式存在以下缺点:
(1)当多个子任务模块需要同时调用一个DLL时,若该DLL文件由于运行时出现错误而崩溃,将会导致调用它的子任务模块崩溃,进而响应整个任务的执行。
(2)各子任务模块间有可能存在一个或多个DLL文件,因此耦合度较高,不易维护。
(3)由于多个子任务模块调用一个DLL文件,当释放其中一个子任务进程(如关闭该子任务模块)时,该子任务模块占用的资源不能完全释放,需要有一部分资源保证共用代码的正常运行。
发明内容
本发明提供一种多个任务共用一个窗口的方法,用以解决现有技术中一个任务中各子任务的进程之间相互影响,其中一个子任务的崩溃将会导致整个任务不能正常运行的问题。
本发明方法包括:
按照一个任务的各子功能将该任务划分为多个功能彼此独立的子任务,当其中的一个子任务运行时,该子任务进程调用其他子任务,并将自己的窗口句柄传递给被调用的子任务;
被调用的子任务运行时,其进程根据接收到的窗口句柄,将调用该子任务的进程的窗口作为其父窗口来创建自己的窗口。
根据本发明的上述方法,根据完成的功能将所述任务划分为多个功能彼此独立的子任务,并设定各子任务间的调用关系和调用方式。
所述当其中的一个子任务运行时,该子任务进程根据预先设定的调用方式和调用关系,直接调用其他子任务,或根据用户在界面上所作出的操作调用其他子任务。
根据本发明的上述方法,所述当其中的一个子任务运行时,该子任务进程向所述被调用的子任务传递自己的窗口句柄;
所述被调用的子任务进程将所述窗口句柄对应的窗口作为父窗口来创建自己的窗口。
根据本发明的上述方法,所述其他子任务为一个或多个。
各子任务运行时,其进程分别占用不同的资源空间。
本发明的有益效果如下:
(1)本发明将一个任务划分为多个功能彼此独立的子任务,子任务间通过进程调用实现整个任务功能,因此,当一个子任务的进程崩溃时,不会影响整个任务的执行。
(2)一个子任务调用另一个子任务时,将自己的窗口句柄传递给被调用的子任务,使被调用的子任务以该窗口句柄对应的窗口作为父窗口来创建自己的窗口,从而实现各子任务之间仅通过窗口句柄联系在一起,因此耦合度很低,易于维护。
(3)由于各子任务功能彼此独立,仅通过窗口句柄联系在一起,没有共用代码,因此,当释放其中一个子任务进程时,该子任务进程占用的资源能够完全释放,提高了运行效率。
附图说明
图1为本发明多个任务进程共用一个窗口的流程示意图。
具体实施方式
本发明提供一种多个任务进程共用一个窗口的方法,该方法首先将一个任务划分为多个子任务,每个子任务功能独立。在该任务执行过程中,运行一个子任务时,该子任务进程调用另一个子任务,并将自己的窗口参数传递给被调用的子任务进程;被调用的子任务进程创建自己的窗口时,根据接收到的窗口参数,将其对应的窗口指定为父窗口。
参见图1,为本发明多个任务进程共用一个窗口的流程示意图,具体步骤包括:
S10、按照一个任务的各种子功能将一个任务划分为多个功能彼此独立的子任务。
划分子任务时,设定各子任务间的调用关系和调用方式。调用关系确定一个子任务可调用哪个或哪些其他的子任务;调用方式确定在调用其他子任务时是不通过用户在界面上操作,由该子任务进程直接启动调用过程,还是根据用户在界面上操作启动调用过程。每个子任务的代码彼此独立,不存在共用代码的引用关系;每个子任务被分别编译为可执行文件。
S11、执行第一个子任务,该子任务进程调用其他子任务,并将自己的窗口句柄传递给被调用的子任务进程。
由于预先设定了各子任务的调用关系,也就确定了执行该任务时需要执行的第一个子任务。
第一个子任务运行时,首先创建该子任务的窗口,该窗口被分配一个窗口句柄,以标识该窗口。
第一个子任务运行时按照预先设定的调用方法调用其他子任务,调用其他子任务的方式有两种:
第一种方式:在第一个子任务中预先指定被直接调用的子任务,当执行第一个子任务时,该子任务进程直接调用指定的子任务。这种方式中,用户不参与调用过程,并感觉不到子任务的调用。
第二种方式:第一个子任务包含为用户提供选择执行其他子任务的选项的功能,第一个子任务运行后,在用户界面中列出可供用户选择的选项,以执行对应的子任务。在用户选定执行选项时,该选项对应的子任务被调用。
不管采用哪种任务调用方式,在子任务被调用时,第一个子任务进程将其窗口句柄传递给被调用的子任务。
第一个子任务可以调用一个或多个其他的子任务,在调用多个子任务时,可以同时采用直接调用方式和通过用户选择的调用方式调用不同的子任务。在第一个子任务调用多个其他的子任务时,分别将其窗口句柄传递给被调用的子任务。
S12、被调用的子任务进程根据窗口句柄,将对应的窗口指定为该子任务进程窗口的父窗口,并创建该子任务进程自己的窗口。
如第一个子任务进程传递的窗口句柄是hModuleWnd1,被调用的子任务进程创建窗口时,通过HWND hModuleWnd2=CreateWindow(....,hModuleWnd1,..)的方法创建窗口hModuleWnd2,这样将hModuleWnd1指定为hModuleWnd2的父窗口,hModuleWnd1与hModuleWnd2之间可以通过Windows API PostMessage或SendMessage互相通信。
当第一个子任务调用多个其他的子任务时,被调用的子任务进程分别按上述方法将调用它的子任务进程(第一个子任务进程)的窗口作为父窗口创建自己的窗口。
每个子任务的进程(包括被调用的子任务和调用它的子任务的进程)运行在不同的内存空间。
被调用的子任务可依照上述方式继续调用其他的子任务,在调用其他的子任务时,将自己的窗口句柄传递给被调用的子任务,使被调用的子任务以调用它的子任务进程的窗口作为父窗口,创建自己的窗口。
上述流程中,各个子任务彼此相互独立,各子任务进程运行在内存中的不同空间,因此,当一个子任务进程崩溃时不会影响调用它的子任务进程或被它调用的子任务进程。并且当一个子任务进程被释放(如该进程被关闭)时,能够完全释放该进程所占用的内存空间。
下面以一个具体的实施例对上述多个进程共用一个窗口的流程进行描述。
本实施例以实现网上视频直播为例,具体步骤包括:
S20、按照实现的功能,将网上视频直播任务划分为多个功能彼此独立的子任务,如,划分为一个展示直播厅列表的子任务、多个展示直播厅中的节目列表的子任务、多个播放直播节目的子任务等。并确定第一个执行的任务是展示直播厅列表的子任务,该任务需要调用展示节目列表的子任务,调用方式是由用户在操作界面上点击对应的直播厅的名称;展示节目列表的子任务调用播放直播节目的子任务,调用方式是由用户在操作界面上点击对应的直播节目的名称。每个子任务的代码彼此独立,不存在共用代码的引用关系;每个子任务被分别编译为可执行文件。
S21、首先执行展示直播厅列表的子任务,该子任务创建自己的窗口,该窗口被分配一个窗口句柄Handle1。该子任务执行完成后,在用户界面上显示各直播厅的名称列表。列表中的每个直播厅名称对应一个展示直播厅节目列表的子任务。
当用户从列表中选择一个直播厅时(点击该直播厅的名称),对应的子任务被调用。此时当前展示直播厅列表的子任务的进程将其窗口句柄Handle1传递给被调用的展示直播节目列表的子任务。
S22、被调用的展示直播节目列表的子任务开始执行,首先创建自己的窗口,对应的窗口句柄为Handle2。在创建自己的窗口过程中,将接收到的窗口句柄Handle1对应的窗口指定为父窗口。在被调用的子任务执行完毕后,在用户界面上显示出选定的直播厅中的直播节目名称列表。
S23、当用户从节目列表中选择一个直播节目播放时(点击该直播节目的名称),该直播节目名称对应的直播节目播放子任务被调用。此时当前展示直播节目列表的子任务的进程将其窗口句柄Handle2传递给被调用的播放直播节目的子任务;被调用的播放直播节目的子任务以Handle2对应的窗口为父窗口来创建自己的窗口,在用户界面上播放选中的直播节目。
对于用户来说,上述调用过程是透明的。
若上述流程步骤S22中,用户选择的直播厅所对应的直播厅节目列表子任务运行时出错,不能正常显示节目列表,由于该子任务与其他直播厅对应的子任务彼此独立,因此,仅对该直播厅中的直播节目的播放有影响,不会对其他直播厅的节目列表显示和直播节目的播放造成影响。
综上所述,本发明将一个任务划分为多个功能彼此独立的子任务,子任务间通过进程调用实现整个任务功能,因此,当一个子任务的进程崩溃时,不会影响整个任务的执行。一个子任务调用另一个子任务时,将自己的窗口句柄传递给被调用的子任务,使被调用的子任务以该窗口句柄对应的窗口作为父窗口来创建自己的窗口,从而实现各子任务之间仅通过窗口句柄联系在一起,因此耦合度很低,易于维护。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (5)
1、一种共用窗口的进程调用方法,其特征在于,按照一个任务的各子功能将该任务划分为多个功能彼此独立的子任务,当其中的一个子任务运行时,该子任务进程调用其他子任务,并将自己的窗口句柄传递给被调用的子任务;
被调用的子任务运行时,其进程根据接收到的窗口句柄,将调用该子任务的进程的窗口作为其父窗口来创建自己的窗口。
2、如权利要求1所述的方法,其特征在于,根据完成的功能将所述任务划分为多个功能彼此独立的子任务,并设定各子任务间的调用关系和调用方式。
3、如权利要求2所述的方法,其特征在于,所述当其中的一个子任务运行时,该子任务进程根据预先设定的调用方式和调用关系,直接调用其他子任务,或根据用户在界面上所作出的操作调用其他子任务。
4、如权利要求1所述的方法,其特征在于,所述其他子任务为一个或多个。
5、如权利要求4所述的方法,其特征在于,各子任务运行时,其进程分别占用不同的资源空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200610090154XA CN100514300C (zh) | 2006-06-29 | 2006-06-29 | 一种共用窗口的进程调用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200610090154XA CN100514300C (zh) | 2006-06-29 | 2006-06-29 | 一种共用窗口的进程调用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101097529A CN101097529A (zh) | 2008-01-02 |
CN100514300C true CN100514300C (zh) | 2009-07-15 |
Family
ID=39011376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200610090154XA Active CN100514300C (zh) | 2006-06-29 | 2006-06-29 | 一种共用窗口的进程调用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100514300C (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013021223A1 (en) * | 2011-08-05 | 2013-02-14 | Intel Corporation | Method and system for work partitioning between processors with work demand feedback |
CN103530194B (zh) * | 2012-07-05 | 2015-05-20 | 腾讯科技(深圳)有限公司 | 软件系统实现方法和软件系统 |
US9195521B2 (en) | 2012-07-05 | 2015-11-24 | Tencent Technology (Shenzhen) Co., Ltd. | Methods for software systems and software systems using the same |
CN107678801B (zh) * | 2017-10-09 | 2018-09-04 | 武汉斗鱼网络科技有限公司 | 一种插件加载的方法和装置 |
-
2006
- 2006-06-29 CN CNB200610090154XA patent/CN100514300C/zh active Active
Non-Patent Citations (2)
Title |
---|
进程间的多线程同步事件控制方法. 宋耀文.信息技术,第11期. 2002 |
进程间的多线程同步事件控制方法. 宋耀文.信息技术,第11期. 2002 * |
Also Published As
Publication number | Publication date |
---|---|
CN101097529A (zh) | 2008-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101075175B (zh) | 基于角色的用户界面导航方法 | |
US7356130B2 (en) | Method and system for selecting speech or DTMF interfaces or a mixture of both | |
CN100514300C (zh) | 一种共用窗口的进程调用方法 | |
KR20060112589A (ko) | 워크플로우 서비스 아키텍처 | |
CN103970526A (zh) | 一种基于Android单Activity的视图切换技术 | |
Daniel et al. | Next in mashup development: User-created apps on the web | |
CN101872305A (zh) | Ui表现和业务逻辑分离方法和系统 | |
CN103927163A (zh) | 插件框架处理装置及插件系统 | |
CN101179673A (zh) | 一种电视常用功能界面定制的方法 | |
CN102123196A (zh) | 在Android手机上实现WinCE/Android混合API的方法 | |
WO2012140564A1 (en) | System and method for mobile application development | |
CN102904738A (zh) | 工单处理方法及相关装置和系统 | |
CN101226479A (zh) | 一种实现手机菜单动态配置的方法 | |
CN102375759B (zh) | 利用有限状态机防止代码重入的方法 | |
CN102236510B (zh) | 一种利用超级任务栏控制即时通信软件的方法及设备 | |
CN101335651A (zh) | 一种终端仿真测试系统及使用该系统扩充终端的方法 | |
CN106407025A (zh) | 一种数据调用系统、方法及装置 | |
CN115760085A (zh) | 分布式实时支付系统的报文处理方法及装置 | |
CN106126213A (zh) | 一种基于IFML的Android开发建模方法 | |
CN102508665B (zh) | 绘制应用程序视图的方法和装置 | |
Armentano et al. | A framework for attaching personal assistants to existing applications | |
CN103294532A (zh) | 快速实现矩阵开关图形化控制系统的方法 | |
KR101196838B1 (ko) | 안드로이드 프레임워크에서 자동 스위치 기능을 갖는 통신 제어 장치 | |
CN102566998B (zh) | 基于数据来源的流程引擎设计方法 | |
CN102196083A (zh) | 一种手机平台列表生成的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |