万一老师的《如今, 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. 二进制<2>

    位运算简介及实用技巧(二):进阶篇(1) =====   真正强的东西来了!   ===== 二进制中的1有奇数个还是偶数个    我们可以用下面的代码来计算一个32位整数的二进制中1的个数的奇偶性, ...

  2. ida动态调试笔记

    ida动态调试笔记 目标文件:阿里安全挑战赛的第二题 点击打开链接 使用环境:ida6.8点击打开链接,adt bundle点击打开链接 首先打开avd安卓模拟器,界面如下: 在dos下运行adb命令 ...

  3. HDU——2054A==B?

    A == B ? Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  4. vue-resource发送multipart/form-data数据

    //add headers this.$http.post('/api', data, { headers: { 'Content-Type': 'multipart/form-data' } }) ...

  5. mybatis学习(九)——动态sql

    MyBatis 的强大特性之一便是它的动态 SQL.可以根据不同条件拼接 SQL 语句. 动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似.主要由以下几种元素. if wh ...

  6. [NOIP2009] $Hankson$ 的趣味题 (数论,gcd)

    题目链接 Solution 此题,用到的结论都是比较浅显的,但是,我竟然没想到反过来枚举... 只有50分... 被自己蠢哭... 结论比较浅显: 1.对于两个正整数\(a\),\(b\),设 \(g ...

  7. d3 数据绑定

    绑定过程 选择元素,绑定数据,追加元素 <!DOCTYPE html> <html> <head> <title>testD3-.html</ti ...

  8. Objective-C日期相关工具方法

    //date根据formatter转换成string +(NSString*)dateToString:(NSString *)formatter date:(NSDate *)date { NSDa ...

  9. Android中沉浸式状态栏的应用

    在Android5.0版本后,谷歌公司为Android系统加入了很多新特性,刷新了Android用户的体验度.而其中的一个新特性就是沉浸式状态栏.那么问题来了,很多非移动端的小伙伴就要问了,什么是沉浸 ...

  10. Codeforces 932 B.Recursive Queries-前缀和 (ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined))

    B. Recursive Queries   time limit per test 2 seconds memory limit per test 256 megabytes input stand ...