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()放在这个函数执行是达不到线程效果的。

最新文章

  1. 删除mysql binlog日志
  2. 如何在Web项目中给没有添加API核心组件添加APIController的帮助页HelpPage
  3. jQuery知识点总结(第二天)
  4. ural 1072. Routing
  5. 淘宝UED上关于chrome的transition闪烁问题的解决方案
  6. BZOJ3743 : [Coci2014]Kamp
  7. win7如何设置某个软件不弹出用户账户控制
  8. http://www.yihaomen.com/article/java/302.htm
  9. MYSQL event_scheduler
  10. plupload+struts2实现文件上传下载
  11. 图论(差分约束系统):POJ 1201 Intervals
  12. Event Sourcing - ENode(二)
  13. systemd-journal[825]: Forwarding to syslog missed 99 messages
  14. easyui datagrid行中点击a标签链接,行被选中,但是获取不到对应的参数
  15. springboot使用zookeeper(curator)实现注册发现与负载均衡
  16. 【Java入门提高篇】Day2 接口
  17. 程序员最常用的Linux命令
  18. go标准库的学习-errors
  19. js总结:增加和减少文本框
  20. Python threading 多参数传递方法

热门文章

  1. 直接new一个对象出来
  2. 模板引擎之jade 学习
  3. 7zip命令行中文说明
  4. Javascript 在严格模式下禁止指向 this
  5. SpringMVC Controller 介绍及常用注解
  6. winform 程序调用及参数调用
  7. IE版本检测
  8. java成员内部类
  9. GitHub + circleCI 自动构建/自动部署 应用
  10. C# OracleBulkCopy 批量插入oracle数据库的方法