![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| valerchi |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 27.5.2008 Где: Геническ Репутация: нет Всего: нет |
Помогите упростить работу с потоком. Вот в чём суть : запускается программа и сразу запускается второй поток, который считает бесконечный цикл и записывает значение цикла в файл. Потом по нажатию кнопки на форме открывается этот файл, в который записано значение, значение считывается и выводится на экран. Можно ли сделать так, чтобы никаких файлов не было, а значение бралось при нажатии кнопки непосредственно из второго , работающего потока и выводилось на экран? Вот что у меня имеется:
И главный поток:
|
||||
|
|||||
| kami |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Посмотрите внимательно на метод Button1Click. Что будет, если нажать на кнопку 2 раза? Правильно, будет создан второй поток, а о созданном при первом нажатии программа просто забудет, а Windows будет помнить. И начнут эти 2 потока бороться за несчастный файл... Как минимум, там нужно
В остальное страшно вникать. Это сообщение отредактировал(а) kami - 1.3.2011, 01:24 |
||||
|
|||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Можно. Но лучше сразу сформулировать задачу, а не вопрос. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| valerchi |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 27.5.2008 Где: Геническ Репутация: нет Всего: нет |
Сделал так, - второй поток запускается, когда активируется форма. Но опять ничего не получается. Вот что получилось:
И второй поток:
|
||||
|
|||||
| cat512 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 438 Регистрация: 20.3.2007 Репутация: 2 Всего: 15 |
Самый простой вариант:
Сделай свойство у второго потока, которое будет иниц. в цикле, а в главном потоке считывай это свойство. |
|||
|
||||
| valerchi |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 27.5.2008 Где: Геническ Репутация: нет Всего: нет |
А как конкретно это сделать? |
|||
|
||||
| valerchi |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 27.5.2008 Где: Геническ Репутация: нет Всего: нет |
Сделал так, а мне высвечивает : Undeclared identifier: 'ReturnValue' |
||||
|
|||||
| valerchi |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 27.5.2008 Где: Геническ Репутация: нет Всего: нет |
Неужели ничего нельзя сделать? Как я понимаю, теоретически это должно было выглядеть так: второй поток выполняет бесконечный цикл и заносит значен6ие "х" в какой - нибудь буфер памяти, а главный поток при нажатии кнопки считывает эту информацию и выдаёт на экран. В моём случае вместо буфера памяти у меня создавался файл, записывался туда результат, а главный поток его считывал. Но это слишком громоздко и неудобно. Может кто знает, как создать такой буфер памяти?
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
valerchi, а что мешает перейти от теории к практике?
Не знаете, как выделить буфер в памяти? или что использовать в качестве буфера? как обеспечить "раздельный" доступ к буферу? Просто вопрос выглядит как "я ничего не знаю, подскажите, что делать". Перво наперво рекомендую к обязательному прочтению статью Многопоточность - как это делается в Дельфи. Если что-то непонятно после первого прочтения, прочитать еще раз. -------------------- There are always someone smarter than you... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |