workerthread.cpp
来自「C++ Builer 多執行緒及Que 範例程式」· C++ 代码 · 共 55 行
CPP
55 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "WorkerThread.h"
//#pragma package(smart_init)
//---------------------------------------------------------------------------
/*
*Author : 拷≧ Xiao Chong
*Email : qs.xiao@gmail.com
*Date : 20060913
*TODO :
*Compiler: BCB6
*Warning : If you will create this thread more than one simutaneously,
be care using global TCriticalSection object between every
time you wanna get gloabl resource from MainForm.
**/
//---------------------------------------------------------------------------
__fastcall Worker::Worker(bool CreateSuspended)
: TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall Worker::Execute()
{
WORK_ITEM item;
while (!Terminated && WaitForSingleObject(MainForm->mDoWorkFlag,INFINITE)==0L)
{
item = MainForm->mQue.front(); //get the item from queue
item.mpFunction(item); //run user define function
MainForm->mQue.pop_front(); //remove front queue item
//VCL is not thread-safe comopnent, alter to MainForm execute
Synchronize(UpdateMemo);
if (MainForm->mQue.size()==0) //if no work to do
::ResetEvent(MainForm->mDoWorkFlag); //will stop at while
// Sleep(500);
}
}
//---------------------------------------------------------------------------
void __fastcall Worker::UpdateMemo(void)
{
MainForm->Memo2->Lines->Delete(0); // delete first item from memo2
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?