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