![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 27.09.2009
Сообщений: 7
|
![]()
Всем доброго. У меня возникла небольшая проблема с методом Synchronize в DLL. Если коротко о проблеме, то: У меня есть некий компонент, который реализует протакол обмена с устройством через СОМ порт. Данное устройство надо привезать через библиотеку к 1С, НО тут возникла небольшая проблема. В компаненте используются 2 потока, один отправляет сообщение устройству, а второй соответственно, неотвлекая главный поток, принемает ответ от устройства. И тут необюошлось без метода Synchronize, который как извесно не работает в библиотеках. Если ктонибуди решал какнить эту проблему, или есть идеи, буду признателен за помошь
![]() |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
а может стоит поменять логику программы ДЛЛ?
или использовать критические секции?(короче к АПИ спустится) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 27.09.2009
Сообщений: 7
|
![]()
к сажелению я не гуру в программировании, поставьте меня на правельный путь
![]() Последний раз редактировалось AnomaliA; 28.09.2009 в 10:00. |
![]() |
![]() |
![]() |
#4 |
Регистрация: 14.08.2009
Сообщений: 8
|
![]()
Вообщето Synchronize необходим только в том случае если вы обновляете GUI интерфейс не из главного потока приложения. Это связано с механизмом обработки сообщений Windows, все что обновляет визуальные свойства должно прихожить из очереди сообщений . Syncronize добавляет вызов вашего метода в эту очередь. Из DLL это естественно не работает просто так , поскольку в DLL создается своя копия объектов VCL, не могу точно сказать но по моему это как то лечится передачей Application.Handle в DLL. Либо в DLL надо передать CAllBack на вызов Synchronize в основном приложении.
|
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 27.09.2009
Сообщений: 7
|
![]()
Тут есть небольшое но, работать с этой библиотекой будет 1С, а где там взять CAllBack и как его передавать я даже представить немогу.
|
![]() |
![]() |
![]() |
#6 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
![]()
не морочьте себе голову, до АПИ спускаться не надо, прочитайте в хелпе пример про класс TCriticalSection - вполне хватит
|
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 27.09.2009
Сообщений: 7
|
![]()
Я конечно понимаю что сдесь собираются в основном программисты со стажем, но у меня он очень маленький, и если не трудно ткнуть меня конкрентно что и где надо делать
![]() |
![]() |
![]() |
![]() |
#8 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
![]()
Во-первых, ткнули уже вполне конкретно и не раз. Непонятно что-то - задавай вопросы. В хелпе по TCriticalSection, по-моему, все неплохо разжевано.
Во-вторых, чтобы тебе помогать конкретно, нужно знать, как оно у тебя сделано. Покажи те куски кода, которые надо засинхронизировать - может, и подскажу чего. |
![]() |
![]() |
![]() |
#9 |
Новичок
Джуниор
Регистрация: 27.09.2009
Сообщений: 7
|
![]()
Вот выполнение второго потока
Код:
Код:
Код:
|
![]() |
![]() |
![]() |
#10 |
Регистрация: 14.08.2009
Сообщений: 8
|
![]()
А что внутри DoReadPacket , если ты просто там что то в файл сохраняешь и не дергаешь визуальные компоненты никакие тогда можно просто вызывать DoReadPacket без syncronize.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку | kapustin | Общие вопросы .NET | 10 | 23.09.2009 22:20 |
Метод Synchronize класса TThread | EdNovice | Общие вопросы Delphi | 10 | 01.08.2009 14:47 |
dll | Maxxx 83 | Помощь студентам | 5 | 01.02.2009 14:49 |
DLL | michaellos | Win Api | 1 | 16.11.2007 21:03 |