c++builder XE6 线程 tthread
thread TThread
class TSleepFunc : public TCppInterfacedObject<TProc>
{
public:
TSleepFunc(TForm28* Form) : FForm(Form)
{
} virtual void __fastcall Invoke(void)
{
for (FForm->ClientDataSet1->First(); !FForm->ClientDataSet1->Eof; FForm->ClientDataSet1->Next())
{
FForm->ClientDataSet1->Edit();
FForm->ClientDataSet1->FieldByName("Stat")->Value = FForm->ClientDataSet1->RecNo;
FForm->ClientDataSet1->Post();
}
TThread::Synchronize(TThread::CurrentThread, UpdateCaption);
} void __fastcall UpdateCaption(void)
{
FForm->Caption = "OK";
} private:
TForm28* FForm;
}; // ---------------------------------------------------------------------------
void __fastcall TForm28::Button1Click(TObject *Sender)
{
ClientDataSet1->Close();
ADOQuery1->Close();
ADOQuery1->SQL->Text = "select * from tt";
ADOQuery1->Open();
ClientDataSet1->Open(); TThread::CreateAnonymousThread(new TSleepFunc(this))->Start(); }
http://codeverge.com/embarcadero.cppbuilder.cpp/trttimethod-do-not-work/1055179
delphi
procedure TForm1.ConnectionTest;
var
sc :TSQLConnection;
begin
sc := TSQLConnection.Create(nil);
sc.DriverName := 'DevartOracle';
sc.Params.Values['DATABASE'] := eDatabase.Text;
sc.Params.Values['User_Name'] := eUserName.Text;
sc.Params.Values['Password'] := ePassword.Text;
sc.Connected := True;
Sleep();
sc.Connected := False;
sc.Free;
end; procedure TForm1.btnMainThreadClick(Sender: TObject);
begin
ConnectionTest; //Does not leak handles with Oracle 12.1.0 client.
end; procedure TForm1.btnThreadedClick(Sender: TObject);
begin
TThread.CreateAnonymousThread(ConnectionTest).Start; //Leaks 9 mutex handles with Oracle 12.1.0 client.
end;
Queue依然会阻塞。
TThread.Queue(TThread.CurrentThread, procedure
begin
FOnProcessPlay(newPos);
end);
tthread.Synchronize(TThread.CurrentThread,updateUI);
tthread.CreateAnonymousThread(updateUI).Start; TThread.Queue(TThread.CurrentThread, startData2Background);
Synchronize代码是阻塞执行的。query.Open()放在这个函数执行是达不到线程效果的。
c++builder XE6 线程 tthread的更多相关文章
- c++builder XE8 线程 Thread
thread Thread c++builder XE8 / RAD 10 Settle delphi TThread.CreateAnonymousThread(MyMethod).Start; ...
- DevExpress VCL 2014.1.2 for C++BUILDER XE6
DevExpress VCL 2014.1.2 for C++BUILDER XE6 1)下载 DevExpress VCL 2014.1.2下载链接:http://pan.baidu.com ...
- c++Builder XE6 MD5 加密算法 BASE64 URL 编码
xe6,xe7 BASE64XE6 MD5 加密算法Delphifunction MD5(const texto: string): string; var idmd5: TIdHashMessage ...
- c++builder XE6 Remote Debuger 远程调试
1.远程目标机器 安装D:\Program Files (x86)\Borland\Remote Debugger\20,没有光盘从已安装的xe6电脑上Bin目录下拷贝文件 bccide.dll bo ...
- C++ Builder多线程编程技术经验谈(转)
源:C++ Builder多线程编程技术经验谈 线程之可行性 在很多情况下,可能需要为程序创建线程.这里给出其中一些可能性: (1)如果创建的是一个多文档接口(Multiple Document ...
- 2年后的Delphi XE6
1.有幸下载到Delphi XE6,下载地址如下: http://altd.embarcadero.com/download/radstudio/xe6/delphicbuilder_xe6_win. ...
- 扩展 delphi 线程 使之传递参数.(给匿名线程增加参数)
新delphi的线程TThread有了CreateAnonymousThread方法,如果再为它加一个可传递的参数不就更好了吗?代码如下: TAnonymousThreadX<T> = c ...
- 扩展 delphi 线程 使之传递参数.
新delphi的线程TThread有了CreateAnonymousThread方法,如果再为它加一个可传递的参数不就更好了吗?代码如下: TAnonymousThreadX<T> = c ...
- String、String Buffer、String Builder
对于String.String Buffer.String Builder:我一直都只知道String是字符串常量,后两者是字符串变量: String和String Buffer是线程安全的,Stri ...
随机推荐
- MySQL Transaction--RR事务隔离级别下加锁测试
============================================================================== 按照非索引列更新 在可重复读的事务隔离级别 ...
- MySQL Transaction--RC事务隔离级别下加锁测试
==============================================================================非索引列更新 在读提交的事务隔离级别下,在非 ...
- pyotherside 试用
pyotherside 试用 这是啥?用python写qt 步骤:安装qt: http://www.qt.io/download-open-source/#section-2安装python3:下载源 ...
- Oracle 基于用户管理恢复的处理
================================ -- Oracle 基于用户管理恢复的处理 --================================ Oracle支持多种 ...
- JUC集合之 ConcurrentSkipListMap
ConcurrentSkipListMap介绍 ConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景. ConcurrentSkipListMap和TreeMap,它 ...
- POJ2411骨牌覆盖——状压dp
题目:http://poj.org/problem?id=2411 状压dp.注意一下代码中标记的地方. #include<iostream> #include<cstdio> ...
- redux学习与使用
Redux: 主要概念Action,reducer,store,state 原理:dispatch ({ type:action, preload: { val } } ) --->reduce ...
- 核心重点lxml
from lxml import html htmlStr = html.etree.HTML(pagehtml, parser= html.etree.HTMLParser(encoding='ut ...
- DataTable 分批处理,每批处理4行
ZZ -- /// <summary> /// 分批处理. /// </summary> public void PartialProc() { ;//每个datatable行 ...
- 快速接入PHP微信支付
微信支付是微信开发中坑最多的一个功能,本文旨在帮助有开发基础的人快速接入微信支付,如果要详细了解微信支付,请看微信支付的开发文档. 再说把开发文档搬到这里来就没必要了.想要快速跑通微信支付的可以继续查 ...