c++ builder 版CreateAnonymousThread用法
万一老师的《如今, 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用法的更多相关文章
- [Form Builder]APP_ITEM_PROPERTY.SET_PROPERTY 用法
ORACLE 推荐使用此种方法来控制ITEM属性,虽然实质也是调用set_item_instance_property和set_item_property ALTERABLE app_item_pro ...
- angularjs中ng-switch的用法
<!DOCTYPE html> <html lang="zh-CN" ng-app="app" ng-controller="ctr ...
- 容器的分类与各种测试(二)——vector部分用法
向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器. 与string相同, vector 同属于STL(Standard Template Library, 标准 ...
- 浩哥解析MyBatis源码(二)——Environment环境
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6625612.html 本应该先开始说Configuration配置类的,但是这个类有点过于 ...
- 重构了cxlt-vue2-toastr插件
距离上篇文章已经过去一个多月了,期间有很多想法,但时间真不是想挤就能挤出来的.其实这段时间我就做了一件事,一个小程序的项目,已上线半月有余,也迭代了几个版本,现在还在不断完善. 先说点题外话,我们做了 ...
- Python3 与 C# 并发编程之~ 协程篇
3.协程篇¶ 去年微信公众号就陆陆续续发布了,我一直以为博客也汇总同步了,这几天有朋友说一直没找到,遂发现,的确是漏了,所以补上一篇 在线预览:https://github.lesschina.c ...
- MyBatis源码解析(二)——Environment环境
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6625612.html 本应该先开始说Configuration配置类的,但是这个类有点过于 ...
- 阿里云MongoDB存储数据
近期上了个活动,考虑后期的运维及人力成本,还是选择了阿里云的MongoDB,不过阿里云这玩意本地测试官方没有给本地测试链接地址,只能做映射上去了测了... 选了个2核4G的,更多详细信息,可以去阿里上 ...
- 借鉴 学习 DELPHI 通用函数 哈哈
[转]关于Delphi通用涵数 http://m.blog.csdn.net/blog/dragonjiang5460/1196927 2006-9-8阅读2016 评论0 DELPHI程序注册码设计 ...
随机推荐
- iOS-----openGL--openGL ES iOS 入门篇2--->绘制一个多边形
在上一篇我们学习了如何搭建IOS下openGL的开发环境,接下来我们来学习如何绘制一个多边形. 在2.0之前,es的渲染采用的是固定管线,何为固定管线,就是一套固定的模板流程,局部坐标变换 -> ...
- iOS学习笔记41-Swift(一)基础部分
一.Swift语言介绍 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题. Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种 ...
- 【bzoj2795】[Poi2012]A Horrible Poem Hash+分解质因数
题目描述 给出一个由小写英文字母组成的字符串S,再给出q个询问,要求回答S某个子串的最短循环节.如果字符串B是字符串A的循环节,那么A可以由B重复若干次得到. 输入 第一行一个正整数n (n<= ...
- 【bzoj3680】吊打XXX 随机化
题目描述 gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将n个gty吊在n根绳子上,每根绳子穿过天台的一个洞.这n根绳子有 ...
- 【bzoj1778】[Usaco2010 Hol]Dotp 驱逐猪猡 矩阵乘法+概率dp+高斯消元
题目描述 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 300)一共N个猪城.这些城市由M (1 <= M <= 44,850)条由两 ...
- java面试题之osi七层网络模型,五层网络模型,每层分别有哪些协议(阿里面试题)
OSI七层网络模型 TCP/IP五层网络模型 对应网络协议 应用层 应用层 HTTP.TFTP.FTP.NFS.WAIS.SMTP 表示层 应用层 Telnet.Rlogin.SNMP.Gopher ...
- scrapy之Selectors
练习url:https://doc.scrapy.org/en/latest/_static/selectors-sample1.html 一 获取文本值 xpath In []: response. ...
- py2exe多文件转换
# -*- coding: utf-8 -*- #import distutils #import py2exe #from distutils.core import setup #distutil ...
- hdu3947 给一些已知(需费用)路径去覆盖一些边 //预先加灌法费用流
River Problem 题意:一个有向树(河流),只有一个汇点1,每条边只有一个出度.有些河道有污染指数xi,必需要治理,有m段路径,可以去覆盖这些,每被覆盖一次,xi降低响应值. :即 给出一些 ...
- Toast问题记录:This Toast was not created with Toast.makeText()
最近使用自己封装的Toast时,遇到一个问题 java.lang.RuntimeException: This Toast was not created with Toast.makeText() ...