c++ builder TThread开线程和关线程演示

这篇博客展示了如何在Windows环境下使用C++创建线程并操作类实例。通过类A的Add()和Display()方法,以及MyThread类的Execute()方法,实现了线程间的同步。在界面上,用户可以通过按钮启动线程并显示类A的id值,同时定时器更新Label1显示id的最新值。
摘要由CSDN通过智能技术生成

1.新建窗口项目,在画面上放两个按钮:button1,button2

2.新建一个类 A

//class A的头文件

#ifndef Unit3H
#define Unit3H
//---------------------------------------------------------------------------
class A
{
    public:
    int id;
    void Add();
    void Display();

    A():id(0)
    {};
    ~A(){};

};
#endif

//class A 的cpp文件

//---------------------------------------------------------------------------
#pragma hdrstop
#include "Unit3.h"
#include "string"

#include "windows.h”
//---------------------------------------------------------------------------
#pragma package(smart_init)
void A::Add()
{
  id++;

 Sleep(10);
}
void A::Display()
{
    char str [20];
    sprintf(str,"id=%d\n",id);
    OutputDebugStringA(str);
}

3.新建个线程文件

//class MyThread的头文件

//---------------------------------------------------------------------------

#ifndef Unit4H
#define Unit4H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include "Unit3.h"
//---------------------------------------------------------------------------
class MyThread : public TThread
{
private:
 int i;
 A * m_pA;
protected:
    void __fastcall Execute();
public:
    __fastcall MyThread(A * pA,bool CreateSuspended);

};
//---------------------------------------------------------------------------
#endif

//class MyThread的cpp文件

//---------------------------------------------------------------------------

#include <System.hpp>
#pragma hdrstop

#include "Unit4.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------

__fastcall MyThread::MyThread(A *pA,bool CreateSuspended)
    : TThread(CreateSuspended),m_pA(pA)
{
}
//---------------------------------------------------------------------------
void __fastcall MyThread::Execute()
{
    while(!Terminated)
    {
       m_pA->Add();
    }
}

4.在画面上的两个按钮程序中放入程序

//button1的

thread1=new MyThread(&aaaa,true);//新建线程,挂起
    thread1->Resume();//恢复线程

//button2的

aaaa.Display();
thread1-> Terminate();

5.在画面上放Label1,Timer1,双击Timer1,放入程序

char str [20];
sprintf(str,"%d",aaaa.id);
 Label1->Caption= str;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值