Q&A

  • 델파이 데모(ThrdDemo)를 보던중 inherited
procedure TThreadSortForm.StartBtnClick(Sender: TObject);

begin

RandomizeArrays;

ThreadsRunning := 3;

with TBubbleSort.Create(BubbleSortBox, BubbleSortArray) do

OnTerminate := ThreadDone;

with TSelectionSort.Create(SelectionSortBox, SelectionSortArray) do

OnTerminate := ThreadDone;

with TQuickSort.Create(QuickSortBox, QuickSortArray) do

OnTerminate := ThreadDone;

StartBtn.Enabled := False;

end;

이러케해서 쓰레드를 생성시켰더군요.



쓰레드를 보면..

TSortThread = class(TThread)

private

FBox: TPaintBox;

FSortArray: PSortArray;

FSize: Integer;

FA, FB, FI, FJ: Integer;

procedure DoVisualSwap;

protected

procedure Execute; override;

procedure VisualSwap(A, B, I, J: Integer);

procedure Sort(var A: array of Integer); virtual; abstract;

public

constructor Create(Box: TPaintBox; var SortArray: array of Integer);

end;



{ TBubbleSort }



TBubbleSort = class(TSortThread)

protected

procedure Sort(var A: array of Integer); override;

end;



{ TSelectionSort }



TSelectionSort = class(TSortThread)

protected

procedure Sort(var A: array of Integer); override;

end;



{ TQuickSort }



TQuickSort = class(TSortThread)

protected

procedure Sort(var A: array of Integer); override;

end;



각각 상속을 받아서....





constructor TSortThread.Create(Box: TPaintBox; var SortArray: array of Integer);

begin

FBox := Box;

FSortArray := @SortArray;

FSize := High(SortArray) - Low(SortArray) + 1;

FreeOnTerminate := True;

inherited Create(False);

end;



이케 생성을 시키거든여. 각각의 상속받은 클래스가 이놈을 호출하는건 알겠는데...

inherited Create(False); 왜 선조클래스의 Create(False)를 호출하는겁니까?







3  COMMENTS
  • Profile
    동급최강바보 2001.10.17 03:02
    TThread객체의 생성자를 보시면

    __fastcall TThread(bool CreateSuspended);요
  • Profile
    델초야~ 2001.10.17 03:35
    동급최강바보 wrote:

    > TThread객체의 생성자를 보시면

    > __fastcall TThread(bool CreateSuspended);요
  • Profile
    나그네 2001.10.17 18:02
    스레드의 Create 가 재정의 되었기 때문이지요.

    그렇기 때문에 다시 호출해주지 않으면 스레드가 실행되지 않습니다.



    델초야~ wrote:

    > 동급최강바보 wrote:

    > > TThread객체의 생성자를 보시면

    > > __fastcall TThread(bool CreateSuspended);요