판넬은 100개가 있는데요, 값을 받으면(통신으로부터) 해당 판넬이 노란색으로 깜박이도록 하는 일을 쓰레드로 하려 하거든요....
이때 전역변수로 두어서 쓰레드가 생성될때(깜박일때) 저장했다가
판넬클릭 할때 해당 쓰레드를 죽이는데 사용해 봤거든요...
제 생각은 쓰레드를 판넬의 수만큼 만들어 놓던지 이에 해당하는 다른 걸 해줘야
해당 쓰레드를 죽일 수 있다는 것이거든요
원하는 만큼 만들수 있는 방법이 어떤게 있는지 궁금합니다..
적어도 a, b, c, ......., z: TmyThread; 이렇게 하는것은 아니겠지요....
아래방식으로 제가 해보았는데요,
아예 다른 방식으로 구현해야 하는것인지....
고견 부탁드립니다.....
type
BlinkFunc = Procedure of Object; // 함수 포인터 선언
type
TBlinkThread = class(TThread)
protected
procedure Execute; override;
public
Blink : BlinkFunc;
constructor Create(CreateSuspended: Boolean; pBlink: BlinkFunc);
// destructor Destroy; override; //이와 같이 선언해서 사용했습니다...(근데 destructor에서 에러가 나더라구요...???)
end;
type
TForm1 = class(TForm)
...
public
RunThreadR, RunThreadY : TBlinkThread;
g_YNo, g_RNo: integer;
procedure Running;
end;
procedure TForm1.Panel1Click(Sender: TObject);
begin
if (IntToStr(g_YNo) = (Sender as TPanel).Caption) then RunThreadY.Suspend
else if (IntToStr(g_RNo) = (Sender as TPanel).Caption) then RunThreadR.Suspend;
end;
지금 사용하시는 윈도우에도 눈에 보이지 않는 몇백개의 쓰레드가 돌고 있지여.
아무래도 컴의 사향이과 OS 의 버젼이 영향을 주겠지만,
저는 일전에 쓰레드를 배열로 동적 생성해서 사용하고 소멸시키고
하는 작업을 해본적이 있습니다.
쓰레드 클래쓰를 하나 만드시고,
그 쓰레드를 배열로 만드세요.
그리고 생성하시고 소멸하시고 하심 됩니다.
정확히 몇개까지 된다는 테스트 해본적이 없습니다.
테스트로 몇백개 까지는 만들어 봤는데 조금 부하가 생겨서
그렇지 사용이 안되는 것은 아닙니다.
그럼~ 항상 즐거운 프로그래밍 하시길~~