万一老师的《如今, Delphi 的多线程已经很易用了!》讲到了TThread.CreateAnonymousThread用法

如今我来讲在c++ builder使用 CreateAnonymousThread。

  要说明的是,c++ builder不能直接照搬Delphi的代码。由于CreateAnonymousThread使用的是Dephi 匿名函数/过程指针。

 1、方法一

  官方论坛谈到用method_cast,但我看过method_cast实现(https://forums.embarcadero.com/thread.jspa?threadID=72457),用到Boost这些东东,姑且不说能不能用,就里面的代码可不适合我等菜鸟。

TThread::CreateAnonymousThread (
method_cast<TProc> (
std::tr1::bind (ThreadSafeShowMessage,
message, title, icon)

2、方法二

  我如今使用这种方法

  

class TSleepFunc : public TCppInterfacedObject<TProc> {
public:
//这里建议用自己继承的TForm。由于后面所需參数要从Form获得
TSleepFunc(TForm3* Form) : FForm(Form) {
} virtual void __fastcall Invoke(void) {
//这里处理你多线程代码
//參数所有是 TForm3的变量,多线程中所需參数从TForm中声明
CreateXP3Archive(FForm->filename, FForm->LabelPath->Text, 1024,
FForm->list, true, true, true, false);
//这里处理和TForm交互内容
TThread::Synchronize(TThread::CurrentThread, UpdateCaption);
} void __fastcall UpdateCaption(void) {
FForm->Caption = "OK";
} private:
TForm3* FForm;
}; void __fastcall TForm3::ButtonClick(TObject *Sender) {
TThread::CreateAnonymousThread(new TSleepFunc(this))->Start();
}

  这里面我演示了多线程调用自己写的函数CreateXP3Archive。以及怎么把參数传入多线程函数中,当中TForm3是我自己firemonkey 窗口。

  另外CreateAnonymousThread是XE版本号以后才提供的函数,相似BCB6这些是没有这个函数的。

c++ builder 版CreateAnonymousThread用法的更多相关文章

  1. [Form Builder]APP_ITEM_PROPERTY.SET_PROPERTY 用法

    ORACLE 推荐使用此种方法来控制ITEM属性,虽然实质也是调用set_item_instance_property和set_item_property ALTERABLE app_item_pro ...

  2. angularjs中ng-switch的用法

    <!DOCTYPE html> <html lang="zh-CN" ng-app="app" ng-controller="ctr ...

  3. 容器的分类与各种测试(二)——vector部分用法

    向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器. 与string相同, vector 同属于STL(Standard Template Library, 标准 ...

  4. 浩哥解析MyBatis源码(二)——Environment环境

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6625612.html 本应该先开始说Configuration配置类的,但是这个类有点过于 ...

  5. 重构了cxlt-vue2-toastr插件

    距离上篇文章已经过去一个多月了,期间有很多想法,但时间真不是想挤就能挤出来的.其实这段时间我就做了一件事,一个小程序的项目,已上线半月有余,也迭代了几个版本,现在还在不断完善. 先说点题外话,我们做了 ...

  6. Python3 与 C# 并发编程之~ 协程篇

      3.协程篇¶ 去年微信公众号就陆陆续续发布了,我一直以为博客也汇总同步了,这几天有朋友说一直没找到,遂发现,的确是漏了,所以补上一篇 在线预览:https://github.lesschina.c ...

  7. MyBatis源码解析(二)——Environment环境

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6625612.html 本应该先开始说Configuration配置类的,但是这个类有点过于 ...

  8. 阿里云MongoDB存储数据

    近期上了个活动,考虑后期的运维及人力成本,还是选择了阿里云的MongoDB,不过阿里云这玩意本地测试官方没有给本地测试链接地址,只能做映射上去了测了... 选了个2核4G的,更多详细信息,可以去阿里上 ...

  9. 借鉴 学习 DELPHI 通用函数 哈哈

    [转]关于Delphi通用涵数 http://m.blog.csdn.net/blog/dragonjiang5460/1196927 2006-9-8阅读2016 评论0 DELPHI程序注册码设计 ...

随机推荐

  1. hdu6034[模拟] 2017多校1

    /*hdu6034[模拟] 2017多校1*/ //暴力模拟26个26进制数即可, 要注意进位 #include<bits/stdc++.h> using namespace std; t ...

  2. 二进制<3>

    Matrix67:位运算简介及实用技巧(三) 进阶篇(2) (2010-07-27 11:10:44) 转载▼ 标签: it 分类: 老贾·OI相关 n皇后问题位运算版    n皇后问题是啥我就不说了 ...

  3. NOJ——1559Jump to the Top of Mountain(简单暴力DFS+渣渣代码)

    [1559] Jump to the Top of Mountain 时间限制: 1000 ms 内存限制: 65535 K 问题描述 Have you played a game named Min ...

  4. 浅谈getStackTrace()方法(一)

    缘起: 今天看到有一个工具类中有一句: String msgToPrint = Thread.currentThread().getStackTrace()[1].getMethodName(); 输 ...

  5. 洛谷P1418 选点问题

    P1418 选点问题 74通过 240提交 题目提供者tinylic 标签云端 难度普及+/提高 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 非常重要!! 90分的点这里 题 ...

  6. cf671B Robin Hood

    We all know the impressive story of Robin Hood. Robin Hood uses his archery skills and his wits to s ...

  7. 单线程实现并发——协程,gevent模块

    一 并发的本质 1 切换 2 保存状态 二 协程的概念 协程,又称微线程,纤程.英文名Coroutine.单线程下实现并发,用户从应用程序级别控制单线程下任务的切换,注意一定是遇到I/O才切. 协程的 ...

  8. Java语言编码规范 - Java语言编码规范(中文版)(http://doc.javanb.com/code-conventions-for-the-java-programming-language-zh/index.html)

      目录 1 介绍 1.1 为什么要有编码规范 1.2 版权声明 2 文件名 2.1 文件后缀 2.2 常用文件名 3 文件组织 3.1 Java源文件 3.1.1 开头注释 3.1.2 包和引入语句 ...

  9. VirtualBox 與 Vmware 差異

    VirtualBox 4.3.36_Ubuntu r105129 與 VMware® Workstation 12 Player  12.5.2 build-4638234, 分別在各自的 Ubunt ...

  10. UE3客户端服务器GamePlay框架

    客户端(当前玩家)与服务器对应关系图: 整体上看,UE3的GamePlay框架使用的是MVC架构 ① 橙色的Actor对象及橙色箭头相连的成员变量只会被同步给Owner客户端 Controller:控 ...