3

我在控制檯應用程序中的BackgroundWorker(高級OmniThreadLibrary組件)主線程出現問題。主線程中的對象(整個應用程序)在爲後臺任務計劃WorkItem時立即死亡。主線程不會等待OnRequestDone方法調用。德爾福 - Omnithreadlibrary,控制檯應用程序中的主線程死亡

procedure TEntityIndexer.StartReindex; 
begin 
    if LoadTable then 
    // in ProcessRecords method I schedule WorkItems for BackgroundWorker 
     ProcessRecords; 
    // when ProcessRecords method is done, application is at the end and 
    // main thread is destoryed, so object in main thread is destroyed 
    // and BackgroundWorker in object in main thread is destroyed too 
end; 

procedure TEntityIndexer.ProcessRecords; 
var 
    _id: Integer; 
    _omniValue: TOmniValue; 
begin 
    FVTable.First; 
    while not FVTable.Eof do 
    begin 
    _id := FVTable.FieldByName('record_id').AsInteger; 
    WriteLogText(cProcesIndexLog, 'ID=' + IntToStr(_id) + '....PROCESS STARTED'); 

    _omniValue := TOmniValue.CreateNamed(
     [ovIdKey, _id, 
     ovXMLKey, FVTable.FieldByName('mx').AsString, 
     ovGenKey, FVTable.FieldByName('created_str').AsString 
     ]); 
    FBackgroundWorker.Schedule(FBackgroundWorker.CreateWorkItem(_omniValue)); 

    FVTable.Next; 
    end; 
end; 

是否有解決方案來解決這種情況?

回答