현재 OmniThreadLibrary를 실험 중입니다. 내 코드는 다음과 같습니다.OmniThreadLibrary를 사용하는 올바른 방법
procedure TMainForm.LongWait;
begin
Task := Parallel.Future<string>(
function: string
begin
Sleep(10000);
Result := 'Done';
end,
Parallel.TaskConfig.OnTerminated(
procedure
begin
if Task.IsDone then
MessageDlg('Complete', mtInformation, [mbOK], 0)
else
MessageDlg('Exception', mtError, [mbCancel], 0)
end)
);
end;
저는 LongWait()을 호출하고 UI를 차단하지 않고 정상적으로 작동합니다. 내가 뭘하고 싶은 것은 : 예외가 발생하면 값
- 백그라운드에서 작업 실행을하자, 나는 주 스레드는
- 주 스레드를 허용 잡으려면 작업이 완료되었거나 취소되었는지 확인하려면
이 모든 작업을 수행 할 수있는 비 차단 기능이 가능합니까?
는V., 사전에 감사
편집 : 질문
귀하의 블로그는 매우 좋습니다. 이것을 차단하지 않고 값을 기다리는 올바른 방법입니까? 'LongWait; Task.TryValue (100, Value) do do not begin 수면 (500); Application.ProcessMessages; 끝; ' –
이것은 하나의 방법입니다. – gabr