2012-12-28 2 views
1

양식의 개체와 관련된 파일을 재귀 적으로 검색하는 함수를 작성 했으므로이 함수를 별도의 스레드에서 실행하므로 UI ​​스레드가 문제가되지 않습니다.다중 스레드에서 반복적으로 호출하는 함수

어떻게 동기화 할 수 있습니까? 매개 변수가있는 함수를 호출합니까?

재귀 함수가 동기화 명령을 호출합니까? 맞습니까?

동기화 모드는 모두 동일한 콜백을 반환합니까?

+2

는 두 번째에 대한 대답은 '당신이 할 수있는 "입니다 t, Synchonize는 매개 변수가 없습니다. " 나머지 질문은 나에게 의미가 없습니다. – GolezTrol

+2

메인 스레드와 동기화하고 하나 이상의 매개 변수가있는 함수를 호출하려면 동기화를 수행 할 수 있습니다 (procedure begin MyFunctionWith (Param1, Param2, ParamN); end); – ComputerSaysNo

+0

친구들이 트릭을 구현할 수 있다고 말함으로써 @GolezTrol에 감사드립니다. 나는 마음에 오지 않았다! 나는 Synchronize 함수가 매개 변수화되었다고 생각했다. : D – HamiD

답변

6

당신은 호출하기 위해 익명의 방법을 사용할 수 있습니다 : 나는 첫 번째 단락을 이해

procedure TMyThread.Execute; 
var 
    MyParameter: Integer; 
begin 
    MyParameter := 42; 
    Synchronize(
    procedure 
    begin 
     MethodWithParameter(MyParameter); 
    end 
    ); 
end; 
+0

이 가능성을 위해서만 익명 방법을 사용하십시오 :-) –

2

당신은 같은 것을 수행 할 수 있습니다

... 
FMyValue := Xyz; 
Synchronize(MyProc); 
... 

Procedure TMyThread.MyProc; 
begin 
    VclProc(FMyValue) 
end; 
관련 문제