CN107562540B - 向ui线程投递回调函数的方法、装置及客户端 - Google Patents

向ui线程投递回调函数的方法、装置及客户端 Download PDF

Info

Publication number
CN107562540B
CN107562540B CN201710789011.6A CN201710789011A CN107562540B CN 107562540 B CN107562540 B CN 107562540B CN 201710789011 A CN201710789011 A CN 201710789011A CN 107562540 B CN107562540 B CN 107562540B
Authority
CN
China
Prior art keywords
thread
message
callback
function
window
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
Application number
CN201710789011.6A
Other languages
English (en)
Other versions
CN107562540A (zh
Inventor
黄浩
张文明
陈少杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710789011.6A priority Critical patent/CN107562540B/zh
Publication of CN107562540A publication Critical patent/CN107562540A/zh
Application granted granted Critical
Publication of CN107562540B publication Critical patent/CN107562540B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Digital Computer Display Output (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

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

Description

向UI线程投递回调函数的方法、装置及客户端
技术领域
本发明涉及Windows技术领域,具体而言,涉及一种向UI线程投递回调函数的方法、装置及客户端。
背景技术
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。在Windows程序中主要分为2种线程类型:UI线程和工作线程。其中,UI线程被称为主线程,包含唯一的一个窗体消息循环,且程序中只能有一个UI线程,与用户界面(User Interface,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可以是,但不限于,个人电脑(personal computer,PC)、平板电脑等。
存储器110、存储控制器120、处理器130、外设接口140、射频单元150、显示单元160及输入输出单元170,各元件之间直接或间接地电性连接,以实现数据的传输或者交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现典型连接。在本实施例中,所述向UI线程投递回调函数的装置500包括至少一个可以软件或固件(firmware)的形式存储于存储器110中或固化在客户端100的操作系统(operating system,OS)中的软件功能模块。处理器130用于执行存储器110中存储的可执行模块,例如,该向UI线程投递回调函数的装置500所包括的软件功能模块及计算机程序等。在本实施例中,所述客户端100的操作系统优选为Windows系统。
其中,所述存储器110可以是但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。存储器110可用于存储软件程序以及模块,处理器130用于在接收到执行指令后,执行该程序。处理器130以及其他可能的组件对第二存储器110的访问可在存储控制器120的控制下进行。
处理器130可能是一种集成电路芯片,具有信号的处理能力。处理器130可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(DSP))、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
外设接口140将各种输入/输出装置(例如射频单元150、显示单元160、输入输出单元170)耦合至处理器130以及存储器110。在一些实施例中,外设接口140、处理器130以及存储控制器120可以在单个芯片中实现。在其他一些实例中,它们可以分别由独立的芯片实现。
射频单元150用于接收以及发送无线电波信号,实现无线电波与电信号的相互转换,从而实现客户端100与网络或其他通信设备之间的无线通信。
所述显示单元160用于提供一个交互界面(例如用户操作界面)或用于显示图像数据。在本实施例中,所述显示单元160可以是液晶显示器或触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处产生的触控操作,并将该感应到的触控操作交由处理器130进行计算和处理。
所述输入输出单元170用于提供给用户输入数据实现用户与客户端100的交互。在本实施例中,所述输入输出单元170可以是,但不限于,鼠标、键盘等。
可以理解,图1所示的结构仅为示意,所述客户端100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
第一实施例
请参照图2,为本发明第一实施例所提供的向UI线程投递回调函数的装置500的功能模块图。所述向UI线程投递回调函数的装置500可应用于图1所示的客户端100中。所述向UI线程投递回调函数的装置500包括窗口类注册模块510、窗口创建模块520、封装模块530、标识模块540、消息发送模块550及调用模块560。
所述窗口类注册模块510用于注册窗口类,其中,所述窗口类与所述窗口过程函数关联。
在本实施例中,可采用如下程序定义一个窗口过程函数,即LRESULT CALLBACKWndProcCallback(HWND window_handle,
UINT message,
WPARAM wparam,
LPARAM lparam);
该窗口过程函数WndProcCallback为用于接收和处理窗口消息的自定义接口,可以看到,该窗口过程函数WndProcCallback包括四个参数HWND、UINT、WPARAM、LPARAM,参数HWND表示窗口句柄,参数UINT表示消息类型,参数WPARAM及LPARAM表示消息参数。在创建窗口之前,必须先定义一个窗口类来规定创建窗口所需要的各种信息,例如,为窗口类指定上述定义的窗口过程函数WndProcCallback,使该窗口类与该窗口过程函数WndProcCallback关联。具体地,所述窗口类注册模块510通过调用GetModuleHandleEx函数获得窗口过程函数WndProcCallback当前所在模块的HMODULE句柄,调用函数RegisterClassEx注册自定义的窗口类Class,用于告诉操作系统当前模块的Handle句柄、接收消息的窗口过程函数WndProcCallback的地址等信息。
所述窗口创建模块520用于依据注册的所述窗口类创建隐藏窗口。
在本实施例中,当窗口类Class注册成功以后,窗口创建模块520依据注册的窗口类Class调用函数CreateWindow创建一个隐藏窗口,该隐藏窗口的属性由该窗口类Class指定,该隐藏窗口可通过窗口句柄HWND进行标识。由于该窗口类Class与窗口过程函数关联,则由该窗口类Class创建的隐藏窗口也与该窗口过程函数关联,因此该窗口过程函数可用于接收和处理该隐藏窗口的消息,并且该窗口过程函数是运行于UI线程中。例如,操作系统可依据窗口句柄HWND,将消息发送至与该窗口句柄对应的窗口,并调用与该窗口关联的窗口过程函数对消息进行处理。需要说明的是,本实施例中创建的隐藏窗口具有消息循环接口及自定义的消息循环过程,该隐藏窗口的消息循环由操作系统统一调度,并自动为该隐藏窗口维护一个系统级别的消息队列,具有回调速度快,自动优化队列消息、保证回调的线程安全等特性,可以保证在执行回调时UI线程的高响应度。
所述封装模块530用于将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行。
在本实施例中,当在工作线程中执行完毕后台操作后,首先调用std::bind函数把运行在工作线程中的回调函数的函数参数封装成一个独立的回调(callback)对象,然后调用PostTask(callback)函数,把该callback对象添加到任务队列中等待执行。具体地,在本实施例中,所述任务队列由用户自己定义,当多个工作线程进行时,在各工作线程内封装成的callback对象均可添加到该任务队列中等待执行。
所述标识模块540用于将所述消息用消息标识符进行标识。
在本实施例中,当把callback对象添加到任务队列中等待执行后,所述标识模块540用于将对来自工作线程的消息采用自定义的消息标识符kMsgHaveWork进行标识后再进行发送。
所述消息发送模块550用于向预设的运行于UI线程的窗口过程函数发送来自所述工作线程的消息。
在本实施例中,所述消息发送模块550通过调用函数PostMessage(kMsgHaveWork),以向窗口过程函数WndProcCallback发送经消息标识符标识kMsgHaveWork标识的消息。也即是说,本实施例中消息发送模块550所发送的消息是一个自定义消息,具有消息标识符kMsgHaveWork。可以理解,操作系统所接收的消息不仅仅包括上述的自定义消息,还会包括其他类型的消息,因此,本实施例中通过该消息标识符kMsgHaveWork对这个自定义消息和其他类型消息加以区分。
所述调用模块560用于当操作系统接收到所述消息后,依据所述消息调用所述窗口过程函数,并依据所述窗口过程函数调用所述回调对象,以使所述回调函数运行于所述UI线程中。
在本实施例中,所述消息发送模块550是通过操作系统将所述消息发送至所述窗口过程函数WndProcCallback进行处理。具体地,在操作系统在接收到所述消息后,首先判断所述消息是否具有所述消息标识符kMsgHaveWork,如果是,即该消息是由消息标识符kMsgHaveWork标识的消息,则可通过该消息中的窗口句柄等参数调用所述窗口过程函数WndProcCallback(也即是将该消息发送给该窗口过程函数),由于这时所述窗口过程函数WndProcCallback是运行在UI线程中的,故通过该窗口过程函数WndProcCallback调用任务队列中等待执行的callback对象,使得callback对象成功运行于UI线程中,回调函数也相应地运行在UI线程环境中而执行,即达到了从工作线程向UI线程投递回调函数的目的,便于在任意工作线程中执行UI相关的界面更新的操作,进而实现UI更新界面的功能,还能避免UI线程在执行耗时的后台操作时,界面卡顿、没有响应,极大提高用户的体验感。如果所述操作系统接收到的所述消息没有所述消息标识符时,该窗口过程函数WndProcCallback不会对该消息进行处理,所述调用模块560则调用默认的消息处理接口DefWindowProc对所述消息进行处理。
第二实施例
请参照图3,为本发明第二实施例所提供的应用于客户端100的向UI线程投递回调函数的方法的流程示意图。需要说明的是,本发明实施例所述的向UI线程投递回调函数的方法并不以图3以及以下所述的具体顺序为限制,其基本原理及产生的技术效果与第一实施例相同,为简要描述,本实施例中未提及部分,可参考第一实施例中的相应内容。应当理解,在其它实施例中,本发明所述的向UI线程投递回调函数的方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。下面将对图3所示的具体流程进行详细阐述。
步骤S101,注册窗口类,其中,所述窗口类与所述窗口过程函数关联。
可以理解,该步骤S101可以由上述的窗口类注册模块510执行。
步骤S102,依据注册的所述窗口类创建隐藏窗口。
可以理解,该步骤S102可以由上述的窗口创建模块520执行。
步骤S103,将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行。
可以理解,该步骤S103可以由上述的封装模块530执行。
步骤S104,将所述消息用消息标识符进行标识。
可以理解,该步骤S104可以由上述的标识模块540执行。
步骤S105,向预设的运行于UI线程的窗口过程函数发送来自所述工作线程的消息。
可以理解,该步骤S105可以由上述的消息发送模块550执行。
应当理解,在本实施例中,该步骤S104也可以是在执行步骤S105时执行,也即是说,当要发送所述消息时,对该消息采用自定义的消息标识符kMsgHaveWork进行标识后再进行发送。
步骤S106,当操作系统接收到所述消息后,依据所述消息调用所述窗口过程函数,并依据所述窗口过程函数调用所述回调对象,以使所述回调函数运行于所述UI线程中。
具体地,当所述操作系统接收到的所述消息具有所述消息标识符kMsgHaveWork后,则调用所述窗口过程函数WndProcCallback,由于窗口过程函数WndProcCallback是运行在UI线程中的,则依据窗口过程函数WndProcCallback调用callback对象可使callback对象成功运行于UI线程中,回调函数也相应运行在UI线程环境中而执行。
可以理解,该步骤S106可以由上述的调用模块560执行。
第三实施例
请参照图4,为本发明第三实施例所提供的应用于客户端100的向UI线程投递回调函数的方法的流程示意图。与第二实施例相比,其不同之处在于,本发明第三实施例所提供的向UI线程投递回调函数的方法还包括:
步骤S107,当所述操作系统接收到的所述消息没有所述消息标识符时,调用默认的消息处理接口对所述消息进行处理。
可以理解,该步骤S107是在步骤S105后执行的。也即是说,在本实施例中,在操作系统接收到所述消息后,要对该消息进行判断,如果该消息具有消息标识符kMsgHaveWork,则执行步骤S106;如果该消息没有消息标识符kMsgHaveWork,则执行该步骤S107。
可以理解,该步骤S107可以由上述的调用模块560执行。
综上所述,本发明实施例所提供的向UI线程投递回调函数的方法、装置及客户端,通过预先建立一个隐藏窗口以及负责接收和处理该窗口消息的窗口过程函数。当工作线程中执行完毕后台操作后,将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行;向预设的运行于UI线程的窗口过程函数发送来自所述工作线程的消息,并对该消息用消息标识符进行标识;当操作系统接收到所述消息后,若所述消息具有所述消息标识符,则调用所述窗口过程函数,并依据所述窗口过程函数调用所述回调对象,以使所述回调函数运行于所述UI线程中。当所述操作系统接收到的所述消息没有所述消息标识符时,调用默认的消息处理接口对所述消息进行处理。本发明实施例所提供的向UI线程投递回调函数的方法,由于隐藏窗口的消息循环由操作系统统一调度,并自动为该窗口维护一个系统级别的消息队列,具有回调速度快,自动优化队列消息,保证回调的线程安全等优点,保证了在执行回调时UI线程的高响应度。此外,通过自定义该隐藏窗口的消息循环过程,达到从工作线程向UI线程投递回调函数的目的,使回调函数运行在UI线程环境中,避免了UI更新接口调用失败,便于在任意工作线程中执行UI相关的更新操作,更新效果较好,同时也避免UI线程在执行耗时的后台操作时,界面卡顿、无响应,给用户的体验感较好。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

Claims (6)

1.一种向UI线程投递回调函数的方法,其特征在于,所述向UI线程投递回调函数的方法包括:
将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行;
将来自所述工作线程的消息采用自定义的消息标识符进行标识;
向预设的运行于UI线程的窗口过程函数发送经所述消息标识符标识的所述消息;
当操作系统接收到所述消息后,判断所述消息具有所述消息标识符,则依据所述消息调用所述窗口过程函数,并依据所述窗口过程函数调用所述回调对象,以使所述回调函数运行于所述UI线程中。
2.如权利要求1所述的向UI线程投递回调函数的方法,其特征在于,所述向UI线程投递回调函数的方法还包括:
当所述操作系统接收到的所述消息没有所述消息标识符时,调用默认的消息处理接口对所述消息进行处理。
3.如权利要求1所述的向UI线程投递回调函数的方法,其特征在于,所述向UI线程投递回调函数的方法还包括:
注册窗口类,其中,所述窗口类与所述窗口过程函数关联;
依据注册的所述窗口类创建隐藏窗口。
4.一种向UI线程投递回调函数的装置,其特征在于,所述向UI线程投递回调函数的装置包括:
封装模块,用于将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行;
标识模块,用于将来自所述工作线程的消息采用自定义的消息标识符进行标识;
消息发送模块,用于向预设的运行于UI线程的窗口过程函数发送经所述消息标识符标识的所述消息;
调用模块,用于当操作系统接收到所述消息后,判断所述消息具有所述消息标识符,则依据所述消息调用所述窗口过程函数,并依据所述窗口过程函数调用所述回调对象,以使所述回调函数运行于所述UI线程中。
5.如权利要求4所述的向UI线程投递回调函数的装置,其特征在于,所述向UI线程投递回调函数的装置还包括:
窗口类注册模块,用于注册窗口类,其中,所述窗口类与所述窗口过程函数关联;
窗口创建模块,用于依据注册的所述窗口类创建隐藏窗口。
6.一种客户端,其特征在于,所述客户端包括:
存储器;
处理器;及
向UI线程投递回调函数的装置,所述向UI线程投递回调函数的装置存储在所述存储器中并包括一个或多个由所述处理器执行的软件功能模块,所述向UI线程投递回调函数的装置包括:
封装模块,用于将运行于工作线程中的回调函数封装成回调对象并添加至任务队列中等待执行;
标识模块,用于将来自所述工作线程的消息采用自定义的消息标识符进行标识;
消息发送模块,用于向预设的运行于UI线程的窗口过程函数发送经所述消息标识符标识的所述消息;
调用模块,用于当操作系统接收到所述消息后,判断所述消息具有所述消息标识符,则依据所述消息调用所述窗口过程函数,并依据所述窗口过程函数调用所述回调对象,以使所述回调函数运行于所述UI线程中。
CN201710789011.6A 2017-09-05 2017-09-05 向ui线程投递回调函数的方法、装置及客户端 Active CN107562540B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710789011.6A CN107562540B (zh) 2017-09-05 2017-09-05 向ui线程投递回调函数的方法、装置及客户端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710789011.6A CN107562540B (zh) 2017-09-05 2017-09-05 向ui线程投递回调函数的方法、装置及客户端

Publications (2)

Publication Number Publication Date
CN107562540A CN107562540A (zh) 2018-01-09
CN107562540B true CN107562540B (zh) 2021-03-12

Family

ID=60979197

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710789011.6A Active CN107562540B (zh) 2017-09-05 2017-09-05 向ui线程投递回调函数的方法、装置及客户端

Country Status (1)

Country Link
CN (1) CN107562540B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108509260B (zh) * 2018-01-31 2021-08-13 深圳市万普拉斯科技有限公司 线程识别处理方法、装置、计算机设备和存储介质
CN113656189A (zh) * 2018-05-15 2021-11-16 西安万像电子科技有限公司 消息处理方法和装置
CN109117144B (zh) * 2018-07-10 2022-01-18 北京小米移动软件有限公司 页面处理方法、装置、终端及存储介质
CN113687879B (zh) * 2021-07-22 2023-05-05 成都鲁易科技有限公司 跨平台框架与平台交互库的交互方法及装置
CN113360302B (zh) * 2021-08-10 2021-10-29 成都市奇点软件有限公司 一种耗时操作取消及阻塞异步转换的方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101770395A (zh) * 2008-12-29 2010-07-07 上海科泰世纪科技有限公司 Applet线程模型及基于Applet线程模型的调用构件的方法
CN105450718A (zh) * 2014-09-30 2016-03-30 阿里巴巴集团控股有限公司 界面更新方法及客户端

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343606B2 (en) * 2003-06-13 2008-03-11 Microsoft Corporation Mechanism for asynchronous components to be application framework agnostic
EP1816838B1 (en) * 2006-02-06 2009-11-04 Samsung Electronics Co., Ltd. A method for any ticker while the user is in any application session in a mobile communication device
US9405654B2 (en) * 2013-06-20 2016-08-02 Microsoft Technology Licensing, Llc Monitoring mobile application performance
CN106648816B (zh) * 2016-12-09 2020-03-17 武汉斗鱼网络科技有限公司 多线程处理系统及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101770395A (zh) * 2008-12-29 2010-07-07 上海科泰世纪科技有限公司 Applet线程模型及基于Applet线程模型的调用构件的方法
CN105450718A (zh) * 2014-09-30 2016-03-30 阿里巴巴集团控股有限公司 界面更新方法及客户端

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Simulation System for Airborne Weather Radar Control and Display Based on Virtual Instrument;Lihua Ruan;《Journal of Software》;20141231;第2638-2644页 *

Also Published As

Publication number Publication date
CN107562540A (zh) 2018-01-09

Similar Documents

Publication Publication Date Title
CN107562540B (zh) 向ui线程投递回调函数的方法、装置及客户端
WO2018077085A1 (zh) 应用程序处理方法、装置及存储介质
CN108170740B (zh) 数据迁移方法、系统和计算机可读存储介质
WO2019019380A1 (zh) 混合app的页面导航方法、装置、终端和存储介质
US11895553B2 (en) Web application with components in different virtual environments
WO2019052417A1 (zh) 页面加载方法、装置、电子设备及存储介质
US9910722B2 (en) Generic callback handling
WO2019024477A1 (zh) 弹幕数据展示方法、装置、电子设备及可读存储介质
US9170786B1 (en) Composable context menus
CN111124544A (zh) 界面显示方法、装置、电子设备及存储介质
CN107918543B (zh) 安装包生成的方法、装置、计算机设备和存储介质
CN114047960A (zh) 操作系统运行方法及装置、电子设备和存储介质
US11656601B2 (en) Method and electronic generation device for generating at least one configuration file for an automation tool, related computer program
WO2019024305A1 (zh) 消息处理方法、装置、电子设备及计算机可读存储介质
WO2019114158A1 (zh) 实时动画显示方法、装置、电子终端及可读存储介质
WO2017143747A1 (zh) 一种移动终端网络请求方法及系统
CN114237651A (zh) 云原生应用的安装方法、装置、电子设备和介质
CN111930678A (zh) 一种数据传输方法、装置及电子设备和存储介质
CN115309470A (zh) 微件的加载方法、装置、设备以及存储介质
US10218767B2 (en) Method, system and browser for executing active object of browser
CN110928706B (zh) 小程序交互方法、装置、电子设备及存储介质
US20240053996A1 (en) Bridging ui elements across multiple operating systems
US8365194B2 (en) Creating and processing dynamic proxy actions for actions that are not yet registered with a client side broker
EP3147807A1 (en) System for and method of data processing in a computer-implemented system
US10628513B2 (en) Providing isolated extensibility for webpages with a unified manifest and omni-accessible platform script

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant