c++builder XE8 线程 Thread
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的更多相关文章
- Lua 学习笔记(九)协同程序(线程thread)
协同程序与线程thread差不多,也就是一条执行序列,拥有自己独立的栈.局部变量和命令指针,同时又与其他协同程序共享全局变量和其他大部分东西.从概念上讲线程与协同程序的主要区别在于,一个具有多个线程的 ...
- java 线程 Thread 使用介绍,包含wait(),notifyAll() 等函数使用介绍
(原创,转载请说明出处!谢谢--http://www.cnblogs.com/linguanh/) 此文目的为了帮助大家较全面.通俗地了解线程 Thread 相关基础知识! 目录: --线程的创建: ...
- Android 线程Thread的2种实现方法
在讲解之前有以下三点要说明: 1.在Android中有两种实现线程Thread的方法: ①扩展java.long.Thread类: ②实现Runnable()接口: 2.Thread类是线程类,它有两 ...
- 线程(thread)
线程(thread): 现代操作系统引入进程概念,为了并发(行)任务 1.进程之间的这种切换代价很高 2.通信方式的代价也很大基本概念: 1.线程是比进程更小的资源单位,它是进程中的一个执行路线(分支 ...
- Java线程Thread的状态解析以及状态转换分析 多线程中篇(七)
线程与操作系统中线程(进程)的概念同根同源,尽管千差万别. 操作系统中有状态以及状态的切换,Java线程中照样也有. State 在Thread类中有内部类 枚举State,用于抽象描述Java线程的 ...
- Asp.Net任务Task和线程Thread
Task是.NET4.0加入的,跟线程池ThreadPool的功能类似,用Task开启新任务时,会从线程池中调用线程,而Thread每次实例化都会创建一个新的线程.任务(Task)是架构在线程之上的, ...
- 线程 Thread Runnable 守护线程 join MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Android Framework中的线程Thread及它的threadLoop方法
当初跟踪Camera的代码中的时候一直追到了HAL层,而在Framework中的代码看见了许很多多的Thread.它们普遍的特点就是有一个threadLoop方法.依照字面的意思应该是这个线程能够循环 ...
- Android 线程 thread 两种实现方法
原文链接: http://blog.csdn.net/boyupeng/article/details/6208072 这篇文章中有三点需要提前说明一下, 一: 在android中有两种实现线程thr ...
随机推荐
- ERROR 1442 (HY000):because it is already used by statement which invoked this stored function/tr
看到mysql的触发器,随手写了一个: mysql> create trigger t_ai_test -> after insert on test -> for each row ...
- 维护没有源代码,float改成double
float f= 931340.31f; Console.WriteLine(f.ToString("#,###,##0.00")); 返回 931,340.30 ,float 1 ...
- Phar文件
phar 扩展名文件提供了一种将整个PHP应用程序打包放入一个被称之为phar(PHP archive)的文件从而更加容易便利地发布和安装的方法.就像是java的jar文件有点类似.除了这个功能外,P ...
- Machine Learning for hackers读书笔记(八)PCA:构建股票市场指数
library('ggplot2') prices <- read.csv('G:\\dataguru\\ML_for_Hackers\\ML_for_Hackers-master\\08-PC ...
- HDU 2125 Local area network
简单DP,N×M的网格其中有一条边坏掉了,问从起点到终点的放法数 有两种方法,一种是DP很好理解 //#define LOCAL #include <cstdio> #include &l ...
- Kafka Topic动态迁移 (源代码解析)
总结下自己在尝试Kafka分区迁移过程中对这部分知识的理解,请路过高手指正. 关于Kafka数据迁移的具体步骤指导,请参考如下链接:http://www.cnblogs.com/dycg/p/3922 ...
- 在view中常见的四种方法的使用场合
四种方法,使view创建好里面就有东西:[1.init 2.initWithFrame使用代码创建的时候.(从文件创建的时候不一定调用:1.init 2.initWithFrame这两个方法) 3 ...
- 850 USB 烧录模式
/************************************************************************* * 850 USB 烧录模式 * 说明: * 本文 ...
- 无线端通用的reset样式
@charset "utf-8"; html, body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, o ...
- web.xml整合s2sh内容
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...