📄 thread.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdlib.h>
#pragma hdrstop
#include "Thread.h"
#include "Main.h"
#pragma package(smart_init)
const AnsiString DataBaseFileName = "..\\..\\Data\\Demos.abs";
const AnsiString ChatMessages[10] = {"Hi", "Hello", "I'm here", "Banzay!",
"Cool", "how are you?", "fine", "who is here", "I'm here", "BzzzZzzz..."};
//---------------------------------------------------------------------------
// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
//
// Synchronize(UpdateCaption);
//
// where UpdateCaption could look like:
//
// void __fastcall TChatMemberThread::UpdateCaption()
// {
// Form1->Caption = "Updated in a thread";
// }
//---------------------------------------------------------------------------
__fastcall TChatMemberThread::TChatMemberThread(bool CreateSuspended)
: TThread(CreateSuspended)
{
}
__fastcall TChatMemberThread::TChatMemberThread(AnsiString Name, bool CreateSuspended): TThread(CreateSuspended)
{
FName = Name;
FreeOnTerminate = True;
FSession = new TABSSession(NULL);
FSession->AutoSessionName = true;
FDatabase = new TABSDatabase(NULL);
FDatabase->DatabaseName = "db_" + Name + "_" + IntToStr(random(1000));
FDatabase->DatabaseFileName = ExtractFilePath(Application->ExeName) + DataBaseFileName;
FDatabase->SessionName = FSession->SessionName;
FDatabase->MultiUser = True;
FDatabase->Open();
FTable = new TABSTable(NULL);
FTable->SessionName = FSession->SessionName;
FTable->DatabaseName = FDatabase->DatabaseName;
FTable->TableName = "Chat";
FTable->Open();
}
__fastcall TChatMemberThread::~TChatMemberThread(void)
{
delete FTable;
delete FDatabase;
delete FSession;
}
void __fastcall TChatMemberThread::RefreshTable()
{
frmMain->tblChat->Refresh();
}
AnsiString __fastcall RandomFrom(const AnsiString *AValues, int AValues_Size)
{
return AValues[random(AValues_Size)];
}
//---------------------------------------------------------------------------
void __fastcall TChatMemberThread::Execute()
{
int I;
for (I=0;I<=20;I++)
{
if (Terminated) return;
if (frmMain->tblChat->Active && frmMain->tblChat->Exists)
{
FTable->AppendRecord(ARRAYOFCONST((FName, RandomFrom(ChatMessages,10))));
Synchronize(RefreshTable);
Sleep(random(100));
}
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -