АлексейК
Дата: 03.06.2004 13:19:16
doevents тут тебе не поможет - он позволяет в определенном месте кода
уступить место для другого, но поток все равно один.
если повиснет оператор - прервется процесс опроса.
как вариант можно написать компонент-службу (отдельное приложение) которая бы постоянно была бы запущена и складывала результаты в табличку.
Paul Chabinsky
Дата: 03.06.2004 14:30:26
В общем сделаю сервис который будет весы опрашивать и в текстовый файлик данные класть, а оттуда буду считывать аксессом... Просто опрос весов 300мс, каждую секунду... Треть всего рабочего веремени интерфейс не реагирует...
Спасибо за идеи и ответы :)
Victosha
Дата: 03.06.2004 14:33:06
| | автор |
| | нужно асинхронно вызывать метод опроса весов |
кто такие весы и что хоть примерно должен делать метод.
Если обращение к базе, то - можно заказать асинхронное обращение к данным, однако платой за это будет резкое усложнение логики приложения.
В смысле интерфейса - Access, в нектором смысле, и так "многопоточен", - окна он "при помощи" Windows разрисовывает. Если ты самописный "градусник" отрисовываешь, то, как раз DoEvents поможет ему отрисовываться "синхронно" с процессом исполнения.
parteigenosse
Дата: 03.06.2004 15:58:46
а собственно ничто не мешает создать самому второй поток, и третий, и сколько надо. ничего там военного нет, в молодости мы такое делали на ВБ5, и все нормально было в конце концов.
Ведь есть же возможность использовать функции ВинАПИ.
Сейчас уже не помню всех подробностей, давненько это было, если надо, могу конечно покопаться.
Граблей в многопоточности конечно много очень, с синхронизацией и реентерабельностью, но они вполне решаемы опять же с помощью АПИ, кртитческих секций, семафоров и прочего подобного.
а однопоточность ВБ приложений проявляется только в том, что там нету объекта вроде TThread ил какого нибудь CThread, и приходится все делать руками.
Зато преимуществом будет то, что ты остаешься в приложении, и есть доступ к базе и всем ее объектам