thread Thread  c++builder XE8 / RAD 10 Settle

TThread.Synchronize(nil, procedure
      begin
        Memo1.Lines.Add('Server has NOT resume download feature');
      end);

delphi

TThread.CreateAnonymousThread(MyMethod).Start;

TThread.Synchronize(TThread.CurrentThread, GetImage);//Synchronize阻塞执行同步

匿名线程中调用单击事件
    TThread.CreateAnonymousThread(
      procedure()
      begin
        Button1.Click();
      end).Start;

get CreateAnonymousThread handler

Thread := TThread.CreateAnonymousThread(My_Own_Procedure);

Thread.OnTerminate := MyThreadTerminated;

Thread.Start;

https://forums.embarcadero.com/thread.jspa?threadID=171738

TThread.Synchronize (TThread.CurrentThread,
procedure ()
begin
end);
end);

匿名线程,函数线程

void __fastcall TForm3::GetImage()
{
;
} void __fastcall TForm3::Button1Click(TObject *Sender)
{
TThread::Synchronize(TThread::CurrentThread, GetImage); }

上面的写法并不是创建新线程。也不是匿名线程的用法,达不到线程的效果。这个是通知主线程执行代码,也就是这个代码必须在子线程里(匿名线程也可以)里的用于更新VCL界面的,所以才用到,普通的VCL没有任何线程的代码写这个毫无意义。

是不是以前的TThread.CreateAnonymousThread

最早是这样http://blog.csdn.net/luozhuang/article/details/29827763

c++匿名线程,XE8也没有官方的实例,RAD 10 Settle才有了。

    TThread::CreateAnonymousThread([this]
{
if (!BluetoothLE1->DiscoveredDevices->Items[ListBox1->ItemIndex]->DiscoverServices())
{
TThread::Synchronize(NULL, [this]
{
ListBox2->Items->Add("- Discover services not allow");
ListBox1->Enabled = true;
});
}
})->Start();
    TThread::CreateAnonymousThread(AnonymousLambda(&this->SampleDownload))->Start();

简化版匿名线程

    TThread::CreateAnonymousThread([this]
{
TThread::Synchronize(NULL, [this]
{
Caption = Now();
Sleep(5000);
Caption = "end";
});
})->Start();

匿名线程调用函数,这个就比较好用了。只能在新版编译器bcc32c使用,bcc32不支持语法。

void __fastcall TForm3::GetImage()
{
this->Caption = Now();
Sleep();
//Query->ExecSQL();执行sql或存储过程
//Query->Open();
Caption = "end";
} 

void __fastcall TForm3::Button1Click(TObject *Sender) 
{
TThread::CreateAnonymousThread([this] {GetImage();})->Start();
}
    TThread::CreateAnonymousThread([this](){
TThread::Synchronize(TThread::CurrentThread, [this]()
{
Button1->Click();
});
})->Start();

看原始定义参数是_di_TProc,还有下面这种写法

TTask::Run( _di_TProc(new TCppTask(5000, MoveUpAnim, Button1)) );

http://community.embarcadero.com/index.php/blogs/entry/spinning-icons-to-visually-queue-load-states-using-true-type-font-pack-font-awesome

http://blog.appmethod.com/spinning-icons-to-visually-queue-load-states-using-true-type-font-pack-font-awesome

CurThread: TThreadID;

CurThread := GetCurrentThreadID;

界面 无延迟无卡顿,用clang编译器

void __fastcall TForm1::Button1Click(TObject *Sender)
{ TTask::Run([]()
{
Sleep();
ShowMessage("aaa");
} );
}

DWORD WINAPI  PollThread(LPVOID pParam)/线程函数

hThread = CreateThread ( NULL, 0, PollThread, this, 0, NULL );

c++builder XE8 线程 Thread的更多相关文章

  1. Lua 学习笔记(九)协同程序(线程thread)

    协同程序与线程thread差不多,也就是一条执行序列,拥有自己独立的栈.局部变量和命令指针,同时又与其他协同程序共享全局变量和其他大部分东西.从概念上讲线程与协同程序的主要区别在于,一个具有多个线程的 ...

  2. java 线程 Thread 使用介绍,包含wait(),notifyAll() 等函数使用介绍

    (原创,转载请说明出处!谢谢--http://www.cnblogs.com/linguanh/) 此文目的为了帮助大家较全面.通俗地了解线程 Thread 相关基础知识! 目录: --线程的创建: ...

  3. Android 线程Thread的2种实现方法

    在讲解之前有以下三点要说明: 1.在Android中有两种实现线程Thread的方法: ①扩展java.long.Thread类: ②实现Runnable()接口: 2.Thread类是线程类,它有两 ...

  4. 线程(thread)

    线程(thread): 现代操作系统引入进程概念,为了并发(行)任务 1.进程之间的这种切换代价很高 2.通信方式的代价也很大基本概念: 1.线程是比进程更小的资源单位,它是进程中的一个执行路线(分支 ...

  5. Java线程Thread的状态解析以及状态转换分析 多线程中篇(七)

    线程与操作系统中线程(进程)的概念同根同源,尽管千差万别. 操作系统中有状态以及状态的切换,Java线程中照样也有. State 在Thread类中有内部类 枚举State,用于抽象描述Java线程的 ...

  6. Asp.Net任务Task和线程Thread

    Task是.NET4.0加入的,跟线程池ThreadPool的功能类似,用Task开启新任务时,会从线程池中调用线程,而Thread每次实例化都会创建一个新的线程.任务(Task)是架构在线程之上的, ...

  7. 线程 Thread Runnable 守护线程 join MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. Android Framework中的线程Thread及它的threadLoop方法

    当初跟踪Camera的代码中的时候一直追到了HAL层,而在Framework中的代码看见了许很多多的Thread.它们普遍的特点就是有一个threadLoop方法.依照字面的意思应该是这个线程能够循环 ...

  9. Android 线程 thread 两种实现方法

    原文链接: http://blog.csdn.net/boyupeng/article/details/6208072 这篇文章中有三点需要提前说明一下, 一: 在android中有两种实现线程thr ...

随机推荐

  1. 编写jquery插件的分享

    一.类级别($.extend) 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法. 开发扩展其方法时使用$.extend方法,即jQuery.extend(o ...

  2. 51nod1204 Parity

    如果sm[j]和sm[i]奇偶性相同,那么(i+1,j)个数为偶数如果奇偶性相同看成是朋友,不同的看成是敌人,那么就跟bzoj1370的做法差不多了. 如果奇偶性相同,就将x和y合并,x+n,y+n合 ...

  3. IOS中bounds和frame

    * 用bounds和frame来修改尺寸是有一些小区别的 三.isEqual:方法 1> 系统会根据对象isEqual方法的返回值来决定两个对象是否相同 * 比如判断对象a和b是否相同,就会查看 ...

  4. 【英语】Bingo口语笔记(29) - Run系列

  5. POJ 2249 Binomial Showdown

    // n 个 数 取 k个数的取法// C(n,k) 注意些细节#include <iostream> #include <string> #include<sstrea ...

  6. ACCESS中的窗体、报表、宏模块等(ACCESS 2000)

    窗体: 分为数据操作窗体,它包括单页.多页.连续.子窗口 控制窗体 信息交互窗体 窗体三种视图:“设计”视图.“窗体”视图.“数据表”视图 窗体建立的五种方式: 一:自动创建窗体 二:窗体向导(一对多 ...

  7. JQuery开发之Galleriffic图片插件介绍

    Galleriffic是一个用于创建快速展示相册中照片的jQuery插件.从图一中可以看成,图片既可以以幻灯片的方式查看,也可以手动点击缩略图查看.Galleriffic还支持分页,从而使得它能够展示 ...

  8. web-ylbtech-数据库备份-数据库设计

    ylbtech-DatabaseDesgin:web-ylbtech-数据库备份-数据库设计 DatabaseName:ylbtech Model:备份 Type:数据库备份设计 Url: 1.A,数 ...

  9. Yii: 设置数据翻页

    一种方法是使用CPagination处理翻页需要的数据如:总数据项数,每页数据项数,当前页,然后在视图中使用CBasePager来绘制. 控制器动作的代码示范: function actionInde ...

  10. Cent OS5.2安装Hyper-V集成光盘

    一.Hyper-V安装windows系统没有问题,windows2000以后系统都可以,一切顺利. 驱动程序:IDE.SCSI.网络.视频和鼠标 要想实现更强的功能,宿主机需要安装Hyper-V集成光 ...