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. [HDOJ1043]Eight(康托展开 BFS 打表)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 八数码问题,因为固定了位置所以以目标位置开始搜索,把所有情况(相当于一个排列)都记录下来,用康托 ...

  2. Longest Valid Parentheses(最长有效括号)

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...

  3. 使用tdcss.js轻松制作自己的style guide

    http://jakobloekke.github.io/tdcss.js/ 在前端开发中,如果能够有一个style guide对于设计来说就显得专业稳定,一致性.在上述链接中,有一个tdcss.js ...

  4. 瞎折腾之 NHibernate ORM框架的接触(MVC + Repository源码)(一)

    在这炮火连天.技术更新迅猛的年代,不接触了解.甚至会用2~3种框架都不好意思说自己有多少年工作经验.况且出去面试也会有点吹牛的底子嘛. 这次折腾了NHibernate.其实这些ORM框架封装好了都是给 ...

  5. HDU 1244 Max Sum Plus Plus Plus

    虽然这道题看起来和 HDU 1024  Max Sum Plus Plus 看起来很像,可是感觉这道题比1024要简单一些 前面WA了几次,因为我开始把dp[22][maxn]写成dp[maxn][2 ...

  6. (转) Python Generators(生成器)——yield关键字

    http://blog.csdn.net/scelong/article/details/6969276 生成器是这样一个函数,它记住上一次返回时在函数体中的位置.对生成器函数的第二次(或第 n 次) ...

  7. curl文件上传有两种方式,一种是post_fileds,一种是infile

    curl文件上传有两种方式,一种是POSTFIELDS,一种是INFILE,POSTFIELDS传递@实际地址,INFILE传递文件流句柄! );curl_setopt($ch, CURLOPT_PO ...

  8. linux VFS 内核数据结构

    <strong>简单归纳:fd只是一个整数,在open时产生.起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp.</strong> 文件描述 ...

  9. <十二>面向对象分析之UML核心元素之节点和设备

    节点,设备

  10. suse10的网络配置(静态IP)

    感觉跟fedora的差别还是蛮大的, 主要是配置文件的不同, 尤其是默认路由, 多了一个单独的文件ifroute-xxx    suse10的网卡配置文件在/etc/sysconfig/network ...