Delphi Thread由另一个线程启动

时间:2018-08-03 01:55:10

标签: multithreading delphi

您好,所有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

0 个答案:

没有答案