어떤 일을 처리할때 thread를 쓰고 바로 종료하고 그렇게
프로그램을 짰거든요.
procedure TfMainToolBar.ReceiveEven;
var
MergeThread1 : MergeThread;
begin
if MergeThread1.
MergeThread1 := MergeThread.Create(MergeQuery, MergeGrid1,ZPgSqlDatabase1,ZPgSqlTransact2);
MergeThread1.OnTerminate := lastThread;
end;
이렇게 했는데 thread가 종료되자 않는 사이에 다시 이 프로시져가 실행되면
에러가 뜨네요.
이 스레드가 실행하고 있는지 종료되어있는지 검사해서 스레드가 실행중이면
이 스레드를 좀 기다렸다가 실행하고 종료되어있으면 바로 스레드를 실행 기켰으면 합니다.어떻게 처리해야할지 모르겠네요. 고수님들 답변 부탁해요
다음과 같은 방법을 제안합니다.
1. 일반적으로 Process가 동시에 두개 뜨지 않도로 할 때 사용하는 방법으로서 Named Mutex(Mutual Exclusion)을 이용하여 Thread의 Execute의
초반에 Mutex를 Create하고나서 GetLastError를 이요하여 혹시 이전에
Create 되어 있었는지 확인하여 Thread가 돌고 있는지 확인 합니다.
더 자세한 사항은 한 Process가 동시에 두번 돌지 않도록 하는 방법에 대해서
찾아 보시면 해답이 있을 것입니다.