您好,所有Stackoverflow的读者和朋友,
我有一个线程,通过单击查询在线API的按钮启动。
此API返回另一个线程下载的URL。
经过一些验证后,第一个线程将像这样启动:
procedure TForm1.Button1Click(Sender: TObject);
var
HTTPAPIThread : THTTPAPIThread;
begin
//some verifications
HTTPAPIThread.Create(API url + some parameter);
HTTPAPIThread.OnAPI := APISource;
HTTPAPIThread.OnTerminate := HTTPAPITerminated;
HTTPAPIThread.Start;
end;
APISource过程执行从线程返回的json中提取url所需的操作
HTTPAPITerminated过程处理潜在的错误,如果未遇到任何错误,则像这样启动第二个线程:
procedure TForm1.HTTPAPITerminated(Sender: TObject);
var
HTTPFULLThread : THTTPFULLThread;
begin
if TThread(Sender).FatalException <> nil then
begin
//warns the user and gives details about the error
end
else //there was no error, launch the second thread
begin
HTTPFULLThread := THTTPFULLThread.Create(url from the API);
HTTPFULLThread.OnFULL := FULLSource;
HTTPFULLThread.OnTerminate := HTTPFULLTerminated;
HTTPFULLThread.Start;
end;
end;
问题:是触发第二个线程的正确位置,还是应该在提取第二个线程使用的URL的APISource的末尾触发它?
对于我来说,仅在第一个线程成功的情况下启动第二个线程似乎是合乎逻辑的,但这可能不是实现事物的正确方法。
感谢您阅读我的问题。
欢呼
Mathias