向UI线程投递回调函数的方法、装置及客户端制造方法及图纸

技术编号:17007021 阅读:25 留言:0更新日期:2018-01-11 03:32
本发明专利技术实施例提出一种向UI线程投递回调函数的方法、装置及客户端,涉及Windows技术领域。该方法将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行,向预设的运行于UI线程的窗口过程函数发送来自工作线程的消息,当操作系统接收到消息后,依据该消息调用该窗口过程函数,并依据该窗口过程函数调用该回调对象,以使回调函数运行于所述UI线程中。该向UI线程投递回调函数的方法实现从工作线程向UI线程投递回调函数,使回调函数运行在UI线程中,以达到在任意工作线程中执行界面更新操作,能避免UI线程在执行耗时的后台操作时造成的界面卡顿、无响应,在一定程度上提升了用户体验。

【技术实现步骤摘要】
向UI线程投递回调函数的方法、装置及客户端
本专利技术涉及Windows
,具体而言,涉及一种向UI线程投递回调函数的方法、装置及客户端。
技术介绍
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。在Windows程序中主要分为2种线程类型:UI线程和工作线程。其中,UI线程被称为主线程,包含唯一的一个窗体消息循环,且程序中只能有一个UI线程,与用户界面(UserInterface,UI)相关的所有操作必须在UI线程中执行,否则调用UI更新接口会失败。工作线程是在程序运行过程中创建的额外线程,用来执行比较耗时的后台操作,比如网络通信、数据库操作等。通常项目在开发过程中,往往需要执行许多比较耗时的后台操作,如果耗时的后台操作放在UI线程里面执行,就会造成程序界面卡顿或者卡死,导致程序界面无响应。为解决上述问题,现有技术是创建一个工作线程来执行后台操作,等后台操作执行完毕,再调用UI更新接口继续做相应的处理与显示。但因为程序中所有的控件界面的更新操作,必须在UI线程中去处理更新,所以在工作线程中调用UI更新接口,容易造成UI界面更新无效,达不到更新的效果,造成调用失败。
技术实现思路
本专利技术的目的在于提供一种向UI线程投递回调函数的方法,以解决现有技术中在工作线程中调用UI更新接口易造成UI界面更新无效、更新效果不佳的问题。本专利技术的目的还在于提供一种向UI线程投递回调函数的装置,以解决现有技术中在工作线程中调用UI更新接口易造成UI界面更新无效、更新效果不佳的问题。本专利技术的目的还在于提供一种客户端,以解决现有技术中在工作线程中调用UI更新接口易造成UI界面更新无效、更新效果不佳的问题。为了实现上述目的,本专利技术实施例采用的技术方案如下:第一方面,本专利技术实施例提出一种向UI线程投递回调函数的方法。所述向UI线程投递回调函数的方法包括将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行;向预设的运行于UI线程的窗口过程函数发送来自所述工作线程的消息;当操作系统接收到所述消息后,依据所述消息调用所述窗口过程函数,并依据所述窗口过程函数调用所述回调对象,以使所述回调函数运行于所述UI线程中。第二方面,本专利技术实施例还提出一种向UI线程投递回调函数的装置。所述向UI线程投递回调函数的装置包括封装模块、消息发送模块及调用模块。所述封装模块用于将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行;所述消息发送模块用于向预设的运行于UI线程的窗口过程函数发送来自所述工作线程的消息;所述调用模块用于当操作系统接收到所述消息后,依据所述消息调用所述窗口过程函数,并依据所述窗口过程函数调用所述回调对象,以使所述回调函数运行于所述UI线程中。第三方面,本专利技术实施例还提出一种客户端,所述客户端包括存储器;处理器;及向UI线程投递回调函数的装置,所述向UI线程投递回调函数的装置存储在所述存储器中并包括一个或多个由所述处理器执行的软件功能模块。所述向UI线程投递回调函数的装置包括封装模块、消息发送模块及调用模块。所述封装模块用于将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行;所述消息发送模块用于向预设的运行于UI线程的窗口过程函数发送来自所述工作线程的消息;所述调用模块用于当操作系统接收到所述消息后,依据所述消息调用所述窗口过程函数,并依据所述窗口过程函数调用所述回调对象,以使所述回调函数运行于所述UI线程中。相对现有技术,本专利技术具有以下有益效果:本专利技术实施例提供的向UI线程投递回调函数的方法、装置及客户端,将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行;向预设的运行于UI线程的窗口过程函数发送来自所述工作线程的消息;当操作系统接收到所述消息后,依据所述消息调用所述窗口过程函数,并依据所述窗口过程函数调用所述回调对象,以使所述回调函数运行于所述UI线程中。该向UI线程投递回调函数的方法实现从工作线程向UI线程投递回调函数,使回调函数运行在UI线程中,以达到在任意工作线程中执行界面更新操作,能避免UI线程在执行耗时的后台操作时造成的界面卡顿、无响应,在一定程度上提升了用户体验。为使本专利技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1示出了本专利技术实施例所提供的客户端的功能模块图。图2示出了本专利技术第一实施例所提供的向UI线程投递回调函数的装置的功能模块图。图3示出了本专利技术第二实施例所提供的向UI线程投递回调函数的方法的流程示意图。图4示出了本专利技术第三实施例所提供的向UI线程投递回调函数的方法的流程示意图。图标:100-客户端;500-向UI线程投递回调函数的装置;110-存储器;120-存储控制器;130-处理器;140-外设接口;150-射频单元;160-显示单元;170-输入输出单元;510-窗口类注册模块;520-窗口创建模块;530-封装模块;540-标识模块;550-消息发送模块;560-调用模块。具体实施方式下面将结合本专利技术实施例中附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本专利技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本专利技术的实施例的详细描述并非旨在限制要求保护的本专利技术的范围,而是仅仅表示本专利技术的选定实施例。基于本专利技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本专利技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。本专利技术的一个实施例所提供的向UI线程投递回调函数的方法及装置可应用于图1所示的客户端100中。如图1所示,客户端100包括存储器110、存储控制器120、处理器130、外设接口140、射频单元150、显示单元160及输入输出单元170。在本实施例中,所述客户端100可以是,但不限于,个人电脑(personalcomputer,PC)、平板电脑等。存储器110、存储控制器120、处理器130、外设接口140、射频单元150、显示单元160及输入输出单元170,各元件之间直接或间接地电性连接,以实现数据的传输或者交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现典型连接。在本实施例中,所述向UI线程投递回调函数的装置500包括至少一个可以软件或固件(firmware)的形式存储于存储器110中或固化在客户端100的操作系统(operatingsystem,OS)中的软件功能模块。处理器130用于执行存储器110中存储的本文档来自技高网...
向UI线程投递回调函数的方法、装置及客户端

【技术保护点】
一种向UI线程投递回调函数的方法,其特征在于,所述向UI线程投递回调函数的方法包括:将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行;向预设的运行于UI线程的窗口过程函数发送来自所述工作线程的消息;当操作系统接收到所述消息后,依据所述消息调用所述窗口过程函数,并依据所述窗口过程函数调用所述回调对象,以使所述回调函数运行于所述UI线程中。

【技术特征摘要】
1.一种向UI线程投递回调函数的方法,其特征在于,所述向UI线程投递回调函数的方法包括:将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行;向预设的运行于UI线程的窗口过程函数发送来自所述工作线程的消息;当操作系统接收到所述消息后,依据所述消息调用所述窗口过程函数,并依据所述窗口过程函数调用所述回调对象,以使所述回调函数运行于所述UI线程中。2.如权利要求1所述的向UI线程投递回调函数的方法,其特征在于,所述向预设的运行于UI线程的窗口过程函数发送来自工作线程的消息的步骤之前包括:将所述消息用消息标识符进行标识。3.如权利要求2所述的向UI线程投递回调函数的方法,其特征在于,所述当操作系统接收到所述消息后,依据所述消息调用所述窗口过程函数的步骤包括:当所述操作系统接收到的所述消息具有所述消息标识符时,调用所述窗口过程函数。4.如权利要求2所述的向UI线程投递回调函数的方法,其特征在于,所述向UI线程投递回调函数的方法还包括:当所述操作系统接收到的所述消息没有所述消息标识符时,调用默认的消息处理接口对所述消息进行处理。5.如权利要求1所述的向UI线程投递回调函数的方法,其特征在于,所述向UI线程投递回调函数的方法还包括:注册窗口类,其中,所述窗口类与所述窗口过程函数关联;依据注册的所述窗口类创建隐藏窗口。6.一种向UI线程投递回调函数的装置,其特征在于,所述向UI线程投递回调函数的装置包括:封装模块,用于将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行;消...

【专利技术属性】
技术研发人员:黄浩张文明陈少杰
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1