Il mio programma Delphi si basa molto sull'automazione di Outlook. Le versioni di Outlook precedenti a 2007-SP2 tendono a rimanere bloccate in memoria a causa di aggiunte errate e codice Outlook scritto male.Se terminare un thread appeso è una buona idea, come posso farlo in sicurezza?
Se Outlook è bloccato, la chiamata a CreateOleObject ('Outlook.Application') o GetActiveObject ... non ritorna e mantiene sospesa l'applicazione fino a quando Outlook.exe non viene chiuso nel task manager.
Ho pensato a una soluzione, ma non sono sicuro che si tratti di buone pratiche o meno.
Avvio Outlook con CreateOleObject in un thread separato, attendere 10 secondi nel thread principale e se Outlook si blocca (CreateOleObject non viene restituito), offrire all'utente di interrompere il processo Outlook.exe dal mio programma.
Ma poiché non voglio forzare l'utente per terminare il processo Outlook.exe, in alternativa ho anche bisogno di un modo per eliminare il nuovo thread nel mio programma che continua a essere sospeso.
- Questa è una buona pratica?
- Come posso terminare un filo sospeso in Delphi senza perdite di memoria?
"scritto male" sarà considerata sia come infiammatoria da alcuni, o come ridondante da quelli di noi che hanno affrontato questi prima. Condivido il tuo dolore, fratello ... –