Mir ist gerade aufgefallen, dass die Verwendung von TTask.Run ein Problem mit der Speicherfreigabe hat, wenn man das in einer
DLL verwendet.
Zitat:
An unexpected memory leak has occurred. The unexpected small block leaks are:
1 - 12 bytes: TObject x 4
21 - 28 bytes: TLightweightEvent x 2
29 - 36 bytes: TWorkStealingQueue<System.Threading.TThreadPool.IT hreadPoolWorkItem> x 2
45 - 52 bytes: TThreadPool.TThreadPoolMonitor x 1
61 - 68 bytes: TThreadPool.TQueueWorkerThread x 2, Unknown x 4
69 - 76 bytes: UnicodeString x 1
133 - 140 bytes: Unknown x 2
173 - 188 bytes: UnicodeString x 1
In der System.Threading wird für den Fall, das es eine
DLL ist, die DLLShutdownProc aus der
Unit System entsprechend angepasst.
Beim Entladen der
Dll sollte dann DLLShutdown aufgerufen werden.
Aber DLLShutdown wird anscheinend
gar nicht aufgerufen.
In der
Unit hat diese Teil
keine blauen Pünktchen.
Kann es sein, dass das vergessen wurde?
Mit XE7 gibt es übrigens kein Speicherproblem.