首页 > 其他分享 >delphi 协程 doroutine bg + ui 嵌套 并行

delphi 协程 doroutine bg + ui 嵌套 并行

时间:2024-12-31 15:41:07浏览次数:1  
标签:begin bg end delphi Vcl task ui 协程

前言

bg 与 ui 是互相嵌套的,没有终点;就是说 程序 若是高密计算,ui + bg 一切同时并行,快速响应;

示例代码

unit main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, doroutine, Vcl.ComCtrls;

type
  TFormMain = class(TForm)
    Button1: TButton;
    ProgressBar1: TProgressBar;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
  end;

var
  FormMain: TFormMain;

implementation

{$R *.dfm}

procedure ui1(task: TTask);
begin
  FormMain.ProgressBar1.Position := task.getInteger('i');
end;

procedure bg1(task: TTask);
begin
  //doSomeThing http 请求了,或其他 后台业务,bg线程 衍生 100个 待主线程执行的协程
  for var i := 1 to 100 do
  begin
    task.ui(ui1).data('i', i).start;
  end;
end;

procedure TFormMain.Button1Click(Sender: TObject);
begin
  task.bg(bg1).start;
end;

end.

效果图

image

标签:begin,bg,end,delphi,Vcl,task,ui,协程
From: https://www.cnblogs.com/feng88/p/18644160

相关文章

  • CEF4Delphi for lazarus在gtk3可以输入中文
    CEF4Delphiforlazarus在gtk3可以输入中文:测试环境:树莓派5(aarch64)CEF4Delphi-104.0.5112.102lazarus4.0RC1 fpc3.3.11)系统安装gtk3:sudoaptinstalllibgtk-3-dev2)修改cef源码打开uCEFLinuxFunctions.pas将Gdk3_library改为ibgtk-3.so.0(红色代码部分)functiongdk......
  • delphi 重复执行 协程;doroutine - repeat
    代码示例重复执行的协程是【智能】,是上一次任务【完成后】,间隔x毫秒执行下一次任务;unitmain;interfaceusesWinapi.Windows,Winapi.Messages,System.SysUtils,System.Variants,System.Classes,Vcl.Graphics,Vcl.Controls,Vcl.Forms,Vcl.Dialogs,Vcl.StdCtrl......
  • 协程原理 函数栈 有栈协程
    协程为什么开销小于线程协程本质上是线程,将调度的代码在用户态重新实现,因为子程序切换不是线程切换而是由程序自身控制,没有线程切换的开销,所以执行效率高。协程通常是纯软件实现的多任务,与CPU和操作系统通常没有关系,跨平台,跨体系结构。协程在执行过程中可以调用别的协程,自己则......
  • 21. C++快速入门--协程 Coroutine 入门
    参考:https://www.cnblogs.com/blizzard8204/p/17563217.htmlhttps://www.bennyhuo.com/2022/03/09/cpp-coroutines-01-intro/本文不完整,更新中1基本概念什么是协程?C++20的协程是一个特殊函数,具有挂起和恢复的能力.(可以不一次性执行)协程可用于异步编程,提供......
  • BGP的工作过程
    基于IGP、静态、直连路由协议实现IP可达---->前置要求,不是BGP工作过程启动BGP协议,并指定邻居关系。邻居之间使用单播进行数据传输,通过三次握手,建立TCP会话通道。之后所有的数据通讯均基于TCP会话通道来传输,并由TCP协议来提供传输的可靠性机制。使用open报文和keepaliv......
  • Windows提示dbghelp.dll缺失怎么解决?
    电脑运行时常见问题深度解析与解决方案:以Windows提示dbghelp.dll缺失为例在数字时代,电脑已成为我们工作、学习和娱乐的重要工具。然而,在使用过程中,我们难免会遇到一些棘手的问题,如文件丢失、文件损坏以及系统报错等。作为一位在软件开发领域摸爬滚打多年的从业者,我将为大家深......
  • RTOS中的协程与任务:区别与应用分析
    在实时操作系统(RTOS)中,任务和协程是常见的并发编程模型,尽管它们在表面上似乎很相似,但在资源管理、调度方式以及执行效率等方面存在显著差异。了解它们的区别对于开发高效、稳定的RTOS应用至关重要。一、任务与协程的基本定义1.任务(Task)在RTOS中,任务通常被看作是一个独立的执......
  • 我的AI工具箱Tauri版-RemoveChangeBG抠图换背景
    本教程基于自研的AI工具箱Tauri版进行RemoveChangeBG人物抠图换背景。RemoveChangeBG人物抠图换背景是基于自研的AI工具箱Tauri版开发的一款强大图像处理工具。支持单张图片及批量处理模式,满足不同用户的多样化需求。通过大模型智能算法,精准识别并抠取人物或物品主体轮廓,......
  • delphi PopupMenu、& 符号、自定义快捷键
    delphiPopupMenu、&符号若要去除这个自动的英文后缀只需要:但这样做后,全部去除快捷键,若我们不想全部去除,它自动的又不方便我们使用,我们可以指定,快捷键:效果:可见&是一个特殊符号,若组件的caption='xyz',这个xyz里若包含&,会忽略,两个&&才能表示一个&;......
  • Qt 软件调试——windbg初篇(一)
    https://blog.csdn.net/weixin_39568531/article/details/134787829 在上一篇《Qt软件调试(二)使用dump捕获崩溃信息》中我们结尾处提示大家先准备好windbg,windbg是非常强大的调试工具,对于我们进行代码调试和分析异常有着非常重要的意义。在Qt软件调试这个系列的首篇,我们介绍了......