|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.11.2009, 06:48 | #1 |
Форумчанин
Регистрация: 16.10.2008
Сообщений: 205
|
Вопрос по потокам.
Если я прикручу к основному модулю своей программы дополнительный модуль, он будет выполняться в отдельном потоке или вместе с основным модулем? Т.е. нужно ли для дополнительного модуля создавать новый поток?
|
27.11.2009, 07:23 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
все модули (я подозреваю, что Вы имеете в виду формы, но в данном случае это неважно) выполняются в одном и том же потоке!
для того, чтобы организовать выполнение чего-либо в отдельном потоке - это нужно программировать самостоятельно (создавая поток (или потоки) и обеспечивая взаимодействие с основным потоком приложения. Примеров, как это сделать много (в том числе и здесь, на форуме были). |
27.11.2009, 07:41 | #3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Задача полностью как звучит?
I'm learning to live...
|
|
27.11.2009, 08:13 | #4 |
Форумчанин
Регистрация: 16.10.2008
Сообщений: 205
|
Основной модуль принимает данные с порта, второй модуль выводит эти данные в виде графика в отдельном окне (добавлен в uses). Вот и хочу чтоб вывод графика был в отдельном потоке. Но т.к. он выводится в другом окне я и подумал что это уже изначально будет свой поток.
|
27.11.2009, 08:24 | #5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Не обязательно, но можно.
Но учти тогда процедуру принятия данных дучше синхронизировать. В отом тебе поможет TThread там есть такая возможность. Создай его стандартными средствами делфи (File-New-thread) и почитай что там в коде будет написано.
I'm learning to live...
|
27.11.2009, 08:28 | #6 |
Форумчанин
Регистрация: 16.10.2008
Сообщений: 205
|
Значит поток все равно создавать нужно... Эт я и хотел выяснить.
Спасибо. |
27.11.2009, 08:36 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
27.11.2009, 08:56 | #8 |
Форумчанин
Регистрация: 16.10.2008
Сообщений: 205
|
Все равно не понял.
Создал поток, пишут что нужно использовать Synchronize(UpdateCaption). Но, как это в моем случае сделать, не понял. |
27.11.2009, 09:22 | #9 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
При добавлении в график некого числа вызывай Application.ProcessMessages чтоб форма не висла. Если хочешь сделать в доппотоке то: Прием данных идет в некую переменную, Допустим в процедуре некой. . В потоке делай метод, в котором будешь считывать из этой переменной значение и добавлять в график, а сам этот метод в том же потоке вызывай в Synchronize. Таким образом поток деликатно приостановится, считает переменную и отрисует график не мешая работать основному потоку. Но тебе доппотоки совершенно не нужны. Считал значение и сразу в график его.
I'm learning to live...
|
|
27.11.2009, 09:36 | #10 |
Форумчанин
Регистрация: 16.10.2008
Сообщений: 205
|
Поток нужен.
Если я захочу изменить как то график (масштаб, интервал, и т.д.), его приходится полностью перерисовать. А это иногда десятки мегабайт данных. Пока программа его перерисовывает, на порт приходят данные и это иногда вызывает ошибки. Поэтому я и хотел чтоб отрисовка и прием данных были в разных потоках. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
срочно нужна помощь по потокам! | Voipp | Общие вопросы C/C++ | 0 | 13.09.2009 21:21 |
NTFS, потоки | alexander707 | Операционные системы общие вопросы | 2 | 20.06.2009 20:50 |
Где можно найти много примеров по потокам и особенно по компоненту backgroundworker? | Neymexa | Общие вопросы .NET | 1 | 16.05.2009 03:34 |
Вопрос по потокам | Eretic | Общие вопросы по Java, Java SE, Kotlin | 5 | 02.04.2009 00:17 |
вопрос по сокетам и общение как в ICQ.Сложный вопрос... | Руслантус | Общие вопросы C/C++ | 2 | 12.08.2008 21:10 |