|
Не завершается поток при закрытии приложения.
|
|||
---|---|---|---|
#18+
Суть проблемы. Пытаюсь закрыть окно в процессе работы потока, предварительно его прервав, и получаю исключение. First chance exception at $763BB512. Exception class EThread with message 'Thread Error: Неверный дескриптор (6)'. Process MoveFiles.exe (19800) Стек вызовов выглядит так: Код: plaintext 1. 2. 3. 4. 5. 6.
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
Странно еще, что после завершение потока FileMovier не уничтожается, хотя имеется FreeOnTerminate := True; Как это дело побороть? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2021, 14:13 |
|
Не завершается поток при закрытии приложения.
|
|||
---|---|---|---|
#18+
Хотя если перенести этот код в Destroy для формы, то отладчик матюгается, но приложение нормально завершается. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2021, 14:20 |
|
Не завершается поток при закрытии приложения.
|
|||
---|---|---|---|
#18+
Страдалецъ, ну ты посмотри исподники TThread, там полторы строки. Код твоей реализации метода .Execute() следит за состоянием свойства Terminated? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2021, 15:04 |
|
Не завершается поток при закрытии приложения.
|
|||
---|---|---|---|
#18+
Страдалецъ хотя имеется FreeOnTerminate := True; ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2021, 17:43 |
|
Не завершается поток при закрытии приложения.
|
|||
---|---|---|---|
#18+
Barmaley57 Страдалецъ хотя имеется FreeOnTerminate := True; Более того, если используется FreeOnTerminate, то ссылку на поток вообще хранить нигде нельзя. Она ведь в любой момент может стать "висячей". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2021, 18:24 |
|
Не завершается поток при закрытии приложения.
|
|||
---|---|---|---|
#18+
авторСтранно еще, что после завершение потока FileMovier не уничтожается, хотя имеется FreeOnTerminate := True; Нужно убрать "FreeOnTerminate := True". И код FormClose упростится. В нём достаточно одной строки: FreeAndNil(FileMovier) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2021, 21:03 |
|
Не завершается поток при закрытии приложения.
|
|||
---|---|---|---|
#18+
Страдалецъ Стек вызовов выглядит так: Страдалец, а не пробовал ли ты ну хотя бы посмотреть в этот стек, раз уж поднапрягся и привёл его? Там же первой строкой написано: проблема в методе Free. Ну вот хоть какие-нибудь мысли в связи с этим чтобы появились? Ну хотя бы убрать этот вызов и посмотреть, что будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2021, 21:07 |
|
Не завершается поток при закрытии приложения.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2021, 22:26 |
|
Не завершается поток при закрытии приложения.
|
|||
---|---|---|---|
#18+
Имхо, стоит добавить, что иногда всё-таки приводит. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2021, 22:32 |
|
|
start [/forum/topic.php?fid=58&msg=40092412&tid=2037089]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 148ms |
0 / 0 |