Нужен ли мне TThreads? Если да, могу ли я приостановить, возобновить и остановить их?

Я всегда задавался вопросом, есть ли лучший способ написать некоторые из моих процедур, особенно те, которые требуют много времени для завершения.

Я всегда запускал все из основного потока графического интерфейса, который, как я теперь понимаю, и понимаю, что это плохо, потому что это сделает приложение невосприимчивым, Application.ProcessMessagesздесь не поможет.

Это заставляет меня думать, что мне нужно использовать TThreads для длительных операций, таких как, например, копирование файла. Это также заставило меня задуматься о том, как некоторые приложения дают вам полный контроль, например, позволяют приостанавливать, возобновлять и/или останавливать операцию.

У меня есть около 3 длительных операций в личном проекте, над которым я работаю, и я отображаю диалоговую форму с включенным TProgressBar. Хотя это работает, я чувствую, что это можно было бы сделать намного лучше.Эти диалоговые окна прогресса могут отображаться так долго, что вы можете захотеть отменить операцию и завершить ее позже.

Как я уже сказал, в настоящее время я запускаю основной поток графического интерфейса, нужно ли вместо этого использовать TThreads? Я не уверен, как и где начать их реализацию, так как я не работал с ними раньше. Если мне нужны потоки, предлагают ли они то, что мне нужно, например, приостановку, возобновление, остановку операции и т. д.?

В основном я ищу лучший способ обработки и управления длительными операциями.

23
задан 30 June 2012 в 21:35
поделиться