Ho un modulo che uso per mostrare alcune informazioni per alcuni secondi. Va bene che il modulo si liberi da solo? Posso avviare un timer nel costruttore e quindi chiamare self.free nell'evento timer? O questo potrebbe portare a problemi?Delphi: Va bene per un modulo liberarlo da solo?
risposta
Inoltre, con un modulo è possibile chiamare il rilascio.
Invia un messaggio CM_RELEASE al modulo. Come reazione chiama gratis. Il vantaggio della versione è che non ci sono messaggi per il modulo che potrebbero causare un arresto anomalo.
Ho un'intera suite di oggetti che si liberano e ho eseguito vari test senza problemi/perdite mostrate. Un TForm potrebbe essere più complesso, ma finché Self.Free() è l'ultima chiamata effettuata, dovresti essere al sicuro.
(Per coloro che si domandano perché sulla terra ho oggetti che si liberano da soli, li passo intorno al sistema molto, quindi li ho implementati tramite il proprio schema di conteggio dei riferimenti. Quando viene rilasciato l'ultimo riferimento, l'oggetto si libera da sé).
Ma Self.Free dovrebbe quasi * mai * essere l'ultima chiamata effettuata da un modulo perché un modulo esegue quasi sempre il codice in risposta a un'azione dell'utente. Usa invece Release. –
Perché non usare solo le interfacce per il conteggio dei riferimenti? –
È possibile effettuare il modulo di liberarsi quando viene chiusa dall'utente o dal codice:
procedure TForm27.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TForm27.FormCreate(Sender: TObject);
begin
Timer1.Enabled := True;
end;
procedure TForm27.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
Close;
end;
Assicurarsi di fornire un proprietario nel costruttore in caso gli arresti di applicazione e il modulo non viene distrutta a il tempo. Il proprietario libererà il modulo prima di liberarsi.
Più ci penso, più mi piace l'idea TCloseAction. Forse dovrei usare quella invece della versione ... – Vegar
se solo le form avessero proprietà DefaultCloseAction, quindi pone potrebbe auto-liberarle senza assegnare gestori di eventi. –
Questo è esattamente ciò che viene fatto con le interfacce.
Sì, ma è necessario ricordare che TComponent di Delphi sovrascrive il conteggio dei riferimenti dell'interfaccia, che spesso causa confusione. –
Utilizzando le interfacce, il modulo verrebbe liberato quando esce dallo scoop. Non lo voglio Voglio che vivi tutto il tempo che vuole senza alcun riferimento ad esso, e quindi liberare se stesso quando è fatto mostrando se stesso. – Vegar
Fabio: Sono sicuro che potresti scavalcarlo. Vegar: le interfacce sono conteggiate con riferimento, non con gestione dell'ambito. – Arafangion
- 1. memcacheD Va bene?
- 2. Va bene restituire None da __new__?
- 3. Va bene lanciare gli eventi da Dispose()?
- 4. Va bene liberare 'void *'?
- 5. Va bene usare un DELETE HTTP per disattivare un record?
- 6. ReactCSSTransitionGroup va bene solo con l'animazione nel nuovo componente?
- 7. Perché non va bene che le variabili siano globali ma va bene per le funzioni?
- 8. Va bene lasciare un canale aperto?
- 9. Va bene avere parentesi nell'URL?
- 10. Va bene chiamare sureIndex su raccolte inesistenti?
- 11. Va bene implementare Modernizr con Twitter Bootstrap?
- 12. Va bene confrontare i valori di PEPROCESS?
- 13. Va bene usare target = "_ blank" in HTML5?
- 14. zeus rspec non riesce a includere i file richiesti, ma rspec da solo va bene
- 15. string [length()] in C++, va bene?
- 16. Va bene non chiamare Thread # join?
- 17. Stringhe casuali in Python 2.6 (Va bene?)
- 18. Va bene usare LinearLayout invece di FrameLayout?
- 19. Va bene creare un UIView su un thread in background?
- 20. A cosa non va bene ASP.NET MVC?
- 21. Va bene finire con classi per lo più statiche?
- 22. Va bene chiamare clearInterval() prima di setInterval()?
- 23. È ambiguo o va perfettamente bene?
- 24. Va bene passare SQLCommand come parametro?
- 25. In JavaScript, l'assegnazione concatenata va bene?
- 26. Va bene avere un tag di ancoraggio vuoto?
- 27. Va bene usare l'array [chiave] in PHP?
- 28. Va bene usare try catch inside, infine?
- 29. Va bene avere un file .htaccess molto lungo?
- 30. Va bene usare AWT con JavaFx?
+1, Questo è, IMHO, l'unico modo pulito per fare in quel caso – Fred
Penso che andrò per questo, in combinazione con l'impostazione del proprietario come un'assicurazione supplementare. – Vegar