我在網上看到一個多執行緒的例程,照著做了一下結果在添加Button1Click事件的時候
報錯說是Cannot find implementation of method Button1Click,就是說找不到實作Button1Click的方法
這是怎么回事?
ps.如何使用定時器呢?Synchronize?
//Unit1.h //主表單頭檔案
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "Unit2.h"
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TButton *Button2;
TEdit *Edit1;
TEdit *Edit2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
TMyThread *thread1,*thread2;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//Unit1.cpp //主表單實作檔案
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
thread1->Resume(); //單擊后才啟動執行緒
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
thread2->Resume();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
thread1=new TMyThread(true,Edit1); //創建執行緒物件實體
thread2=new TMyThread(true,Edit2);
}
//---------------------------------------------------------------------------
//Unit2.h //執行緒類頭檔案
//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
//---------------------------------------------------------------------------
class TMyThread : public TThread
{
private:
TEdit *edResult; //自定義區域變數
String strResult;
protected:
void __fastcall Execute();
void __fastcall ShowResult(); //自定義函式
public:
__fastcall TMyThread(bool CreateSuspended,TEdit *AEdit); //注意:修改了默認引數
};
//---------------------------------------------------------------------------
#endif
//Unit2.cpp //執行緒類實作檔案
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
__fastcall TMyThread::TMyThread(bool CreateSuspended,TEdit *AEdit)
: TThread(CreateSuspended)
{
edResult=AEdit;
}
//---------------------------------------------------------------------------
void __fastcall TMyThread::Execute()
{
for(int i=0;i<200;i++)
{
strResult=IntToStr(i);
Synchronize(ShowResult); //管理執行緒同步,保證安全性
Sleep(100);
}
}
//---------------------------------------------------------------------------
void __fastcall TMyThread::ShowResult()
{
edResult->Text=strResult;
}
//---------------------------------------------------------------------------
uj5u.com熱心網友回復:

這里的指定執行緒是說什么?
uj5u.com熱心網友回復:
雙擊Button1的時候出現這個報錯資訊嗎?uj5u.com熱心網友回復:
對啊,感覺費解啊uj5u.com熱心網友回復:
那就再添加一個Button3,看看是否正常轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/119855.html
標籤:VCL組件使用和開發
上一篇:關于檔案過濾驅動的irp捕獲問題
下一篇:MFC歌詞的同步顯示
