Я пытаюсь добиться следующего (используя Delphi7):
После входа в мою программу пользователь получает контроль, но в фоновом режиме отдельный поток загружает файл из Интернета, чтобы проверить, находится ли текущий лицензионный ключ в черном списке. Если это так, пользователь получает приглашение и программа завершает работу.
Итак, я создал отдельный класс TThread, который загружает черный список из сети, используя InternetOpenURL / InternetReadFile.
Моя проблема заключается в следующем:
Если пользователь выходит из моей программы до завершения загрузки в фоновом режиме, поток менеджера лицензий должен быть прерван основным потоком.
Если поток выполнил свою работу, он должен автоматически завершиться.
Если я использую FreeOnTerminate: = true, я не могу прекратить поток из основного потока. Но в противном случае, как я могу заставить поток освободить свои ресурсы после того, как он выполнил свою работу?
Мой другой вопрос:
Если лицензионный ключ занесен в черный список, я использую Synchronize, чтобы сделать что-то с определенными ресурсами основной формы приложения.
Но как мне узнать, если пользователь уже закрыл приложение и программа находится в FormDestroy основной формы, например? Если я синхронизируюсь не вовремя, это может привести к нарушениям доступа ...
Спасибо!