私の iOS アプリは (デバッガーで実行している場合は、アプリがエラーなしでフリーズするだけで) 数分間の集中的な使用の後に終了するため、アプリが単に突然終了する可能性のある理由を調べ始めました。(しかし、常にしばらくしてから最初に実行してください。)
終了時に終了するように設定された、存続期間の短いスレッドを多数作成します。(私はコンストラクタでFreeOnTerminate := Trueを使用しています。)ただし、Delphi IDE では | 実行が実行された後、スレッドが生きているように見える スレッドステータス。
したがって、デバッグ ウィンドウには、たとえばState=noneおよびStatus=unknownの 100 のスレッドがあります。スレッドが完全に解放されていない/なくなっていないことを意味すると思いますか?
参考までに、デモコード:
constructor TMyOnlineThread.Create(...) ;
begin
inherited Create(False);
//--
//...
//--
FreeOnTerminate := True;
end;
destructor TMyOnlineThread.Destroy;
begin
//...
inherited;
end;
procedure TMyOnlineThread.Execute;
begin
//--
// Single task. No while loop or anything like that.
//--
if (...) then
begin
if Assigned(FOnDone) then
Synchronize(MyCallBack)
;
end
;
end;
procedure someothercode;
begin
TMyOnlineThread.Create(...);
end;