www.pudn.com > Producer&cusuom.rar > Unit1.cpp
//--------------------------------------------------------------------------- #include#pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; TProducterThread *Thread5;//=new TProducterThread(false); TStreamProduct *Thread1; TStreamProduct *Thread2,*Thread3,*Thread4,*TmpProducterThread; freeproducts *lpHead; freeproducts *lpEnd; freeproducts *Tmppt; TCriticalSection *TQ; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(Timer2->Enabled==false) {Timer2->Enabled=true;} else { if(Button1->Caption=="停工") { Thread5->Suspend(); //TQ->Acquire(); Button1->Caption="开工"; //TQ->Release(); } else { Thread5->Resume(); //TQ->Acquire(); Button1->Caption="停工"; //TQ->Release(); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { if(Button2->Caption=="挂起") { Thread1->Suspend(); //TQ->Acquire(); Button2->Caption="唤醒"; //TQ->Release(); } else { Thread1->Resume(); //TQ->Acquire(); Button2->Caption="挂起"; //TQ->Release(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { if(Button4->Caption=="挂起") { Thread3->Suspend(); //TQ->Acquire(); Button4->Caption="唤醒"; // TQ->Release(); } else { Thread3->Resume(); //TQ->Acquire(); Button4->Caption="挂起"; //TQ->Release(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { if(Button3->Caption=="挂起") { Thread2->Suspend(); // TQ->Acquire(); Button3->Caption="唤醒"; //TQ->Release(); } else { Thread2->Resume(); //TQ->Acquire(); Button3->Caption="挂起"; //TQ->Release(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { if(Button5->Caption=="挂起") { Thread4->Suspend(); //TQ->Acquire(); Button5->Caption="唤醒"; //TQ->Release(); } else { Thread4->Resume(); // TQ->Acquire(); Button5->Caption="挂起"; //TQ->Release(); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { Timer1->Enabled=false; if(Button2->Enabled==false) { if(lpHead!=NULL&&lpEnd!=NULL) { Thread1=NULL; Thread1=lpHead->TSP; //TQ->Acquire(); if(lpHead==lpEnd) { free(lpHead); lpHead=NULL; lpEnd=NULL; } else { Tmppt=lpHead; lpHead=lpHead->PTRStread; free(Tmppt); } //TQ->Release(); Thread1->InitStread(ProgressBar2,Button2,Edit2); Thread1->Resume(); Button2->Enabled=true; } } if(Button3->Enabled==false) { if(lpHead!=NULL&&lpEnd!=NULL) { Thread2=NULL; //TQ->Acquire(); Thread2=lpHead->TSP; if(lpHead==lpEnd) { free(lpHead); lpHead=NULL; lpEnd=NULL; } else { Tmppt=lpHead; lpHead=lpHead->PTRStread; free(Tmppt); } //TQ->Release(); Thread2->InitStread(ProgressBar3,Button3,Edit3); Thread2->Resume(); Button3->Enabled=true; } } if(Button4->Enabled==false) { if(lpHead!=NULL&&lpEnd!=NULL) { Thread3=NULL; //TQ->Acquire(); Thread3=lpHead->TSP; if(lpHead==lpEnd) { free(lpHead); lpHead=NULL; lpEnd=NULL; } else { Tmppt=lpHead; lpHead=lpHead->PTRStread; free(Tmppt); } // TQ->Release(); Thread3->InitStread(ProgressBar4,Button4,Edit4); Thread3->Resume(); Button4->Enabled=true; } } if(Button5->Enabled==false) { if(lpHead!=NULL&&lpEnd!=NULL) { Thread4=NULL; // TQ->Acquire(); Thread4=lpHead->TSP; if(lpHead==lpEnd) { free(lpHead); lpHead=NULL; lpEnd=NULL; } else { Tmppt=lpHead; lpHead=lpHead->PTRStread; // free(Tmppt); } Thread4->InitStread(ProgressBar5,Button5,Edit5); // TQ->Release (); Thread4->Resume(); Button5->Enabled=true; } } //Timer2->Enabled=true; Timer1->Enabled=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Thread1=NULL; Thread2=NULL; Thread3=NULL; Thread4=NULL; Thread5=NULL; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { free(Thread1); free(Thread2); free(Thread3); // free(Thread4); free(Thread5); if(lpHead!=NULL) { while(lpHead!=NULL) { Tmppt=lpHead; if(lpHead!=lpEnd) lpHead=lpHead->PTRStread; else { lpHead=NULL; lpEnd=NULL; } free(Tmppt); } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer2Timer(TObject *Sender) { //Timer1->Enabled=false; Timer2->Enabled=false; if(Button1->Caption=="开始演示"||Button1->Enabled==false) { Thread5=new TProducterThread(true); Thread5->ProductThing(ProgressBar1,Button1,Edit1); Thread5->Resume(); //TQ->Acquire(); Button1->Caption="停工"; Button1->Enabled=true; //TQ->Release(); } //Timer1->Enabled=true; Timer2->Enabled=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::ExitClick(TObject *Sender) { if(Button2->Enabled==true) { Thread1->Suspend(); Thread1->Terminate(); free(Thread1); } if(Button3->Enabled==true) { Thread2->Suspend(); Thread2->Terminate(); free(Thread2); } if(Button4->Enabled==true) { Thread3->Suspend(); Thread3->Terminate(); } free(Thread3); if(Button5->Enabled==true) { Thread4->Suspend(); Thread4->Terminate(); } free(Thread4); if(Button1->Enabled==true) { Thread5->Suspend(); Thread5->Terminate(); } free(Thread5); if(lpHead!=NULL) { while(lpHead!=NULL) { Tmppt=lpHead; if(lpHead!=lpEnd) lpHead=lpHead->PTRStread; else { lpHead=NULL; lpEnd=NULL; } free(Tmppt); } } Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::N1Click(TObject *Sender) { Timer2->Enabled=false; Button1->Caption="开始演示"; if(Button2->Enabled==true) { Thread1->Suspend(); Thread1->Terminate(); free(Thread1); } if(Button3->Enabled==true) { Thread2->Suspend(); Thread2->Terminate(); free(Thread2); } if(Button4->Enabled==true) { Thread3->Suspend(); Thread3->Terminate(); } free(Thread3); if(Button5->Enabled==true) { Thread4->Suspend(); Thread4->Terminate(); } free(Thread4); if(Button1->Enabled==true) { Thread5->Suspend(); Thread5->Terminate(); } free(Thread5); if(lpHead!=NULL) { while(lpHead!=NULL) { Tmppt=lpHead; if(lpHead!=lpEnd) lpHead=lpHead->PTRStread; else { lpHead=NULL; lpEnd=NULL; } free(Tmppt); } } ProgressBar1->Position=0; ProgressBar2->Position=0; ProgressBar3->Position=0; ProgressBar4->Position=0; ProgressBar5->Position=0; Edit1->Text="0"; Edit2->Text="0"; Edit3->Text="0"; Edit4->Text="0"; Edit5->Text="0"; Button2->Enabled=false; Button3->Enabled=false; Button4->Enabled=false; Button5->Enabled=false; } //---------------------------------------------------------------------------