| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Асинхронный или синхронный запуск |
| Автор: eXa 15.8.2007, 18:54 | ||||||
Возможно ли запустить ниже приведенный код асинхронно, а что ещё лучше синхронно. Без использования класса TThread и вообще потоков, а как множество отдельных программ взаимодействующих с главнной потоком(формой) Если да, то как?
Вот что программа выводит, время выполнения 9 секнуд
а надо, время выполнения 3 секунды
|
| Автор: eXa 15.8.2007, 20:13 | ||||
хм... синхронно - одновременно, асинхронно по порядку, в разнобой... Разве что то не так? O_o
С патоками небыло вапросов, но с ними нельзя, ну может всётки наколдует кто нибудь мне эти чудестные строчки над каторыми я уже бюсь около недели |
| Автор: ALeXandrK 15.8.2007, 20:51 |
| А что ты тут вообще собрался выполнять синхронно/асинхронно? У тебя же не несколько методов, а всего один. Поясни что я тут не понял... И потом ты в процедуре SubDelay запускаешь Application.ProcessMessages, что ведет к неопределенным задержкам - ну кто знает сколько там будут обрабатываться незнамо какие сообщения? Есть спец средства, которые позволяют определять сколько выполняется по времени тот или иной участок кода. Ты бы прогнал посмотрел - что у тебя затягивает процесс, но для начала убери Application.ProcessMessages может тебе это даст прирост во времени. P.s.: может смысл слов синхронно/асинхронно ты и понимаешь, но как все это дело завязанно с компьютером ты видишь с трудом. |
| Автор: eXa 16.8.2007, 02:48 |
| Допустим у меня есть однопоточная программа, я делаю n'ое количество её экземпляров и "скармливаю" ей через форму разные данные для обработки, метод их обработки ессно один. Вот что мне требуется только в атоматизированом варианте.Ну а SubDelay обычный таймер, каторый можно заменить sleep'ом что лучше не будет, можно конешно воспользоваться сторонними таймерами... Вообщем это процедура не важна. |
| Автор: aktuba 16.8.2007, 04:38 | ||
Это и есть потоки. Объясни нормально, что ты хочешь в итоге получить. |
| Автор: eXa 16.8.2007, 18:16 |
| Я объяснил вполне даходчиво что мне надо |
| Автор: aktuba 16.8.2007, 19:03 | ||||
Да нет... Например
С помощью потоков или отдельных файлов никак не сделаешь, т.к. необходимо отслеживать действие каждого из поток/файлов и вовремя(!!!) приостанавливать/продолжать действие каждого потока/файла. Иначе не угадаешь у какого потока/файла процедура сработает раньше/позже. А кроме этого отдельное приложение вообще может вылететь с ошибкой, зависнуть и т.д. Что в этом случае делать остальным экземплярам? |
| Автор: eXa 16.8.2007, 19:39 | ||||
Если отдельный экземпляр вылетает с ошибкой, то он просто прекращает сваю работу, в случии зависания незнаю что может случиться... ------------------------------------- Вот помагли с кодесами, но вот незадача, в Application.ProcessMessages вызванный из SubDelay должен был сгенерировать переход к TMForm.WMMyFake, но этова почемут не происходит...
|