Многопоточное приложение

Paul Chabinsky
Дата: 03.06.2004 13:02:39
Возможно ли создать многопоточное приложение с помощью Акса(АДП вариант).
Мне нужно асинхронно вызывать метод опроса весов, чтоб не тормазил при этом сам интерфейс программы.
Kelme
Дата: 03.06.2004 13:04:50
cм. DoEvents
АлексейК
Дата: 03.06.2004 13:19:16
doevents тут тебе не поможет - он позволяет в определенном месте кода
уступить место для другого, но поток все равно один.
если повиснет оператор - прервется процесс опроса.

как вариант можно написать компонент-службу (отдельное приложение) которая бы постоянно была бы запущена и складывала результаты в табличку.
paparome
Дата: 03.06.2004 13:22:28
автор
чтоб не тормазил при этом сам интерфейс программы.


ИМХО - для этого DoEvents дотаточно :)
Senin Viktor
Дата: 03.06.2004 13:29:10
АлексейК прав, пока выполняется метод никакой Doevents не поможет ... да него еще управление да же не дошло. А вот в самом методе DoEvents не помешал бы :)
Paul Chabinsky
Дата: 03.06.2004 14:30:26
В общем сделаю сервис который будет весы опрашивать и в текстовый файлик данные класть, а оттуда буду считывать аксессом... Просто опрос весов 300мс, каждую секунду... Треть всего рабочего веремени интерфейс не реагирует...

Спасибо за идеи и ответы :)
Victosha
Дата: 03.06.2004 14:33:06
автор
нужно асинхронно вызывать метод опроса весов


кто такие весы и что хоть примерно должен делать метод.
Если обращение к базе, то - можно заказать асинхронное обращение к данным, однако платой за это будет резкое усложнение логики приложения.

В смысле интерфейса - Access, в нектором смысле, и так "многопоточен", - окна он "при помощи" Windows разрисовывает. Если ты самописный "градусник" отрисовываешь, то, как раз DoEvents поможет ему отрисовываться "синхронно" с процессом исполнения.
marvan
Дата: 03.06.2004 15:33:14
А если сваять две базы: одна опрашивает весы и скидывает данные через прилинкованные таблицы во вторую. Ну, а во второй сам интерфейс и таблички.
parteigenosse
Дата: 03.06.2004 15:58:46
а собственно ничто не мешает создать самому второй поток, и третий, и сколько надо. ничего там военного нет, в молодости мы такое делали на ВБ5, и все нормально было в конце концов.
Ведь есть же возможность использовать функции ВинАПИ.
Сейчас уже не помню всех подробностей, давненько это было, если надо, могу конечно покопаться.
Граблей в многопоточности конечно много очень, с синхронизацией и реентерабельностью, но они вполне решаемы опять же с помощью АПИ, кртитческих секций, семафоров и прочего подобного.

а однопоточность ВБ приложений проявляется только в том, что там нету объекта вроде TThread ил какого нибудь CThread, и приходится все делать руками.

Зато преимуществом будет то, что ты остаешься в приложении, и есть доступ к базе и всем ее объектам