TThread执行自定义函数
来源:互联网 发布:js读取本地文件到流 编辑:程序博客网 时间:2024/06/08 08:42
1、线程定义
#ifndef MyThreadH
#define MyThreadH
#include <Classes.hpp>
class threadMy : public TThread
{
private:
protected:
void __fastcall Execute();
public:
TThreadMethod myMethod;
__fastcall threadMy(bool CreateSuspended);
void __fastcall UpdateCaption();
void __fastcall SetFunPoint(TThreadMethod myNewMethod); //自定义函数指针
__property Terminated;
bool RunFunctioning;//true 正在运行函数 false 运行结束
};
#endif
cpp文件
#include <vcl.h>
#pragma hdrstop
#include "MyThread.h"
#include "Unit1.h"
#pragma package(smart_init)
__fastcall threadMy::threadMy(bool CreateSuspended)
: TThread(CreateSuspended)
{
RunFunctioning = false;
}
void __fastcall threadMy::Execute()
{
//typedef void __fastcall (__closure *TThreadMethod)(void);
//Sleep(5000);
//Synchronize(myMethod);
myMethod();//不会引起无响应
//Synchronize(UpdateCaption);//会有无响应
}
void __fastcall threadMy::UpdateCaption()
{
// Form1->Caption = Now();
Sleep(5000);
}
void __fastcall threadMy::SetFunPoint(TThreadMethod myNewMethod)
{
myMethod = NULL;
myMethod = myNewMethod;
}
调用实例
class TForm1 : public TForm
{
public: // User declarations
__fastcall TForm1(TComponent* Owner);
void __fastcall runQuery1();
void __fastcall runQuery2();
void __fastcall RunFunByThread(TThreadMethod myNewMethod);
};
void __fastcall TForm1::RunFunByThread(TThreadMethod myNewMethod)
{
if( tr )
{
if( tr->RunFunctioning )
return;
tr->Terminate();
delete tr;
tr = NULL;
}
if( tr == NULL)
tr = new threadMy(true);
tr->SetFunPoint(myNewMethod);
tr->Resume();
// tr->WaitFor();
// tr->RunFunctioning = true;
// tr->RunFunctioning=false;
// tr->Terminated;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Caption = "";
start = 0;
RunFunByThread(runQuery1);//函数1
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Caption = "";
start = 0;
RunFunByThread(runQuery2); //函数2
}
两个函数,可以自定义,切换
自定义代码写在当前类窗体中,不用写到线程thread里了
一个工程中可以包含线程头文件,公用一个线程单元文件,不用重复写线程代码
- TThread执行自定义函数
- 自定义函数结束后执行
- js Date自定义函数 延迟脚本执行
- javascript 自定义函数 为什么不能执行
- jQuery 绑定点击事件执行自定义函数
- TThread 日志
- Thrift TThread
- TThread 详解
- 让 VB 执行自定义字符串代码的 API 函数。
- 配置在python shell中执行自定义函数
- VC中利用webbrowser执行自定义JS函数
- MySql DETERMINISTIC log_bin_trust_function_creators 自定义函数执行时报错
- oracle实现自动记录存储过程、自定义函数执行错误
- UI基础:UI程序执行顺序(UIApplicationMain()函数),自定义视图
- 自定义Log、打印执行哪个函数、判断当前是什么输入法
- sqlserver 自定义、删除、执行 函数和存储过程
- DataExcel 设置 动作(事件)执行函数 自定义动作
- 剖析TThread类
- gdb 使用
- C++学习笔记7——标准IO库
- 从1.5k到18k, 一个程序员的5年成长之路
- 【计算机网络】网络编程--udp发送接收数据
- sigaction函数及信号的处理方式
- TThread执行自定义函数
- 详解在Myeclipse中搭建ssh工程(一)
- linux命令之查找技巧
- 文件解锁
- 二 迭代器(四)迭代器相应型别及traits编程技法
- 对《移动互联网白皮书(2013年)》的几个解读
- 冒泡排序 一个简单示例
- 9.2.3(记忆化搜索_硬币问题)
- 详解在Myeclipse中搭建ssh工程(二)