首页 > 其他分享 >【记录一下】lazarus多线程的用法

【记录一下】lazarus多线程的用法

时间:2024-10-28 15:44:11浏览次数:5  
标签:begin end Text TForm1 用法 lazarus memo1 多线程 procedure

网友“蓝天白云”在qq群问lazarus多线程的问题,以下代码是“啊D”给出的,但编译出错。

procedure TForm1.Button2Click(Sender: TObject);
begin
  memo1.Text := 'start...';
  TThread.CreateAnonymousThread(
  procedure
  var
  i: integer;
  begin
    Sleep(1000);
    for i := 0 to 99999 do
      TThread.Synchronize(nil,
      procedure
      begin
        Form1.memo1.Text := IntToStr(i);
      end
    );
    memo1.Text := 'end.';
  end
  ).Start;
end;

如需编译上述代码需要fpc 3.3.1及用

{$mode delphi}
或
{$mode objfpc}{$H+}
{$ModeSwitch ANONYMOUSFUNCTIONS}

就可以正常编译。

unit Unit1;

{$mode objfpc}{$H+}
{$ModeSwitch ANONYMOUSFUNCTIONS}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure Button2Click(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button2Click(Sender: TObject);
begin
  memo1.Text := 'start...';
  TThread.CreateAnonymousThread(
  procedure
  var
  i: integer;
  begin
    Sleep(1000);
    for i := 0 to 99999 do
      TThread.Synchronize(nil,
      procedure
      begin
        Form1.memo1.Text := IntToStr(i);
      end
    );
    memo1.Text := 'end.';
  end
  ).Start;
end;

end.

 

标签:begin,end,Text,TForm1,用法,lazarus,memo1,多线程,procedure
From: https://www.cnblogs.com/qiufeng2014/p/18510802

相关文章

  • python中any和all函数用法
    内置any()作用:判断一个可迭代对象中是否至少有一个值为True,理解:逻辑“或”,只要有一个满足True条件,返回为True,用法:any([True,False])any((0,'',False))返回TrueFalse注意:空字符串,变量值为0等,空对象都属于False内置all()作用:判断一个可迭代对象中是否全为True,(......
  • Python之多线程
    一、使用threading模块的Thread类1.1介绍这是Python中最基本的创建线程的方法。通过定义一个函数,然后将这个函数作为参数传递给Thread类的构造函数来创建线程。每个线程对象代表一个独立的执行线程。1.2代码示例importthreadingimporttimedefprint_numbers():......
  • Java 多线程面试题
    什么是线程和进程?进程(Process)定义:进程是一个正在运行的程序的实例。每个进程都有自己的内存空间、数据栈和其他用于跟踪进程执行的辅助数据。特性:        进程之间是相互独立的,拥有各自的地址空间。        进程间通信(IPC)相对复杂,通常需要使用管道、套接......
  • Badge组件的用法
    文章目录1概念介绍2实现方法3示例代码我们在上一章回中介绍了WebView组件相关的内容,本章回中将介绍如何在图标旁边添加小红点.闲话休提,让我们一起TalkFlutter吧。1概念介绍在实际项目中有时候需要在图标旁边显示小红点,而且小红点内还有数字,比如购物车图......
  • <collection> 和 <association>的详细用法(附详细代码解析)
    MyBatis中的<association>和<collection>标签在MyBatis中,<association>和<collection>标签用于配置复杂查询的结果集关联映射,主要用于处理实体类之间的嵌套关系。二者的区别在于:<association>标签用于一对一的关系映射,比如实体类A中包含一个实体类B的对象......
  • 2024年最新互联网大厂精选 Java 面试真题集锦(JVM、多线程、MQ、MyBatis、MySQL、Redis
    前言春招,秋招,社招,我们Java程序员的面试之路,是挺难的,过了HR,还得被技术面,在去各个厂面试的时候,经常是通宵睡不着觉,头发都脱了一大把,还好最终侥幸能够入职一个独角兽公司,安稳从事喜欢的工作至今...近期也算是抽取出大部分休息的时间,为大家准备了一份通往大厂面试的小捷径,准备......
  • C++中decltype关键字用法总结
    目录一、前言二、基本用法及示例 三.推导规则四.decltype与typeid的区别五.decltype与std::decay的关系六.总结一、前言        decltype是C++11新增的一个关键字,和auto的功能一样,用来在编译时期进行自动类型推导。引入decltype是因为auto并不适用于所有......
  • uprobe的用法以及原理
    参考Uprobe-tracer:Uprobe-basedEventTracing深入ftraceuprobe原理和功能介绍Linuxuprobe:User-LevelDynamicTracingperf-tools--uprobe用bpftrace跟踪C++代码WhatisLinuxutilitytomangleaC++symbolname?示例跟踪C++程序:/system/bin/logd#查看支......
  • C++/CLI 类内多线程编程 多个参数
    usingnamespaceSystem;usingnamespaceSystem::Threading;namespaceNNNN{ publicrefclassTTTT { staticThread^t1; staticThread^t2; voidfun() { t1=gcnewThread(gcnewParameterizedThreadStart(DoWork1)); t2=gcnewThread(gcnewP......
  • Linux笔记---Makefile的简单用法
    1.什么是MakefileMakefile是一种用于自动化构建和管理项目的工具,特别是在软件开发中非常常见。它包含了一系列规则(rules)和指令,描述了如何编译和链接源代码文件,以及生成最终的可执行文件或库文件。简单来说,在系统中存在一个叫做make的命令,该命令被使用之后,会在当前目录下......