Ну, такое написать... полное непонимания принципа потокостроения...
1. findShare должна быть в потоке. С формой должна общаться через Synchronize.
2. execute потока должно обрабатывать сообщение о прерывании потока. Фактически, если код FindShare внести в поток, то он и будет методом Execute. Внутри цикла тогда надо обрабатывать Terminated (которое свойство).
3. Организация многих потоков. Тут есть 2 варианта. Если потоков предполагается отностительно не много (ну до 20-30), то можно просто создавать их и "бросать" - сами помрут по выполнению. Если хочется иметь возможность прервать выполнение, но потоков все-равно не очень много, то придется мудрить со списком указателей на потоки и синхронизацией между ними. Если потоков получается слишком много, то придется делать очередь заданий и пул потоков (ограниченный).
|