Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[12557] Re:DateToStr(Date), TimeToStr(Time)을 이용하여 반복적으로 Label.caption을 업데이트 할때 프리징
주정섭 [jjsverylong] 2696 읽음    2009-03-25 13:00
이전 질문을 보아하니, 스레드를 제대로 이해하지 못하면서, 스레드를 사용하면서 락킹 문제를 유발한거 같은데...

쓰레드 코딩을 하려면, 델파이 스레드 관련 문서를 최소 5번이상 읽은 다음에 하셔야 합니다. 안그러면, 원인 불명의 골때리는 버그들에 시달리게 됩니다. 뭣을 만드는지 몰라도, 단순히 시계 표시라면 스레드를 안쓰고도 해결하는 방법이 있을텐데, 굳이 스레드를 동원한 이유를 모르겠습니다.

굳이 인디 스레드로 시계 표시를 처리하려면 다음과 같이 코드를 수정해 보시기 바랍니다.

이렇게 코딩한다 해도 또다른 문제에 부닥힐 것입니다만, 일단 돌아가기는 할것입니다. 자세한 설명은 다른 고수에게로 패스.

TForm2 = class(TForm)
    // 중략
    procedure FormCreate(Sender: TObject);
    procedure IdThreadComponent1Run(Sender: TIdThreadComponent);
  private
    { Private declarations }
    procedure DispInfo;
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
begin
  LongTimeFormat := 'hh : nn : ss.zzz';
  IdThreadComponent1.Start;
end;

procedure TForm2.DispInfo;
begin
  Label1.Caption := (DateToStr(now) + #13 + TimeToStr(now));
end;

procedure TForm2.IdThreadComponent1Run(Sender: TIdThreadComponent);
begin
  IdThreadComponent1.Synchronize(DispInfo);
end;


초록강 님이 쓰신 글 :
: DateToStr(Date), TimeToStr(Time)을 이용하여 반복적으로 Label.caption을 업데이트 할때 프리징이 생기네요
:
:
: procedure TForm1.FormCreate(Sender: TObject);
: begin
:   LongTimeFormat := 'hh : nn : ss.zzz';
:   IdThreadComponent1.Start;
: end;
: procedure TForm1.IdThreadComponent1Run(Sender: TIdThreadComponent);
: begin
:   Label1.Caption := DateToStr(Date) + #13 + TimeToStr(Time);
:   Sleep(5);
: end;
: 

:
: 코드만 보면 전혀 문제없어보이는데 초반에는 정상적으로 잘 돌다가 몇초후 멈춤현상이 발생합니다.
: 뭐가 문제인건가요?
:
: IdThreadComponent1
: Active False
: Loop False
: Priority tpNormal
: StopMode smTerminate
: Tag 0
: ThreadName ''

+ -

관련 글 리스트
12539 DateToStr(Date), TimeToStr(Time)을 이용하여 반복적으로 Label.caption을 업데이트 할때 프리징 초록강 2222 2009/03/23
12557     Re:DateToStr(Date), TimeToStr(Time)을 이용하여 반복적으로 Label.caption을 업데이트 할때 프리징 주정섭 2696 2009/03/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.