Zawsze zastanawiałem się, czy istnieje lepszy sposób, w jaki powinienem napisać niektóre z moich procedur, szczególnie tych, które wymagają długiego czasu.Czy potrzebuję TThreads? Jeśli tak, mogę zatrzymać, wznowić i zatrzymać?
Zawsze uruchamiałam wszystko poza głównym GUI Wątek, który teraz rozumiem i rozumiem jest zły, ponieważ spowoduje, że aplikacja przestanie reagować, Application.ProcessMessages
nie pomoże tutaj.
To powoduje, że muszę używać TThreads do długich operacji, takich jak na przykład kopiowanie pliku. Zastanawiam się również, w jaki sposób niektóre aplikacje dają pełną kontrolę, np. Pozwalają wstrzymać, wznowić lub zatrzymać operację.
Mam około 3 długich operacji w projekcie osobistym, nad którym pracuję, na którym wyświetlam formularz dialogowy z TProgressBar na. Chociaż to działa, wydaje mi się, że można to zrobić znacznie lepiej. Te okna dialogowe postępu mogą być wyświetlane przez tak długi czas, że możesz anulować operację i zamiast tego zakończyć pracę później.
Jak już powiedziałem, obecnie używam wątku Main Gui, czy zamiast tego muszę używać TThreads? Nie wiem, jak i gdzie zacząć je wdrażać, ponieważ nie pracowałem z nimi wcześniej. Jeśli potrzebuję wątków, czy oferują one to, czego potrzebuję, takie jak wstrzymywanie, wznawianie, zatrzymywanie operacji itp.?
Zasadniczo szukam lepszego sposobu obsługi i zarządzania długimi operacjami.
Musisz zasygnalizować wątkowi, który chcesz wstrzymać lub anulować. A nić musi sprawdzić ten sygnał. –
lub możesz zawiesić, a następnie wznowić. Sygnał podobny do globalnego var jest lepszy i bardziej zorganizowany. Możesz również użyć Mutex jako sygnału ... –
@ Benjamin Zawieszanie i wznawianie? Nie całkiem. Te funkcje systemu Windows nie powinny być używane. –