• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

C++ и потоки(thread)

Автор SkinnyMan, 14.06.13, 01:21:12

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

SkinnyMan

Нужно выполнять некоторую последовательность действий в 2D документе через промежутки времени без блокировки(зависания) основного окна Компаса.
Пробую это решить созданием отдельного потока, используя класс std::thread. Перед выполнением действий пытаюсь получить интерфейс
ksDocument2D doc( kompas.ActiveDocument2D() );
но, вне зависимости от того вызвано это до создания потока или в самом потоке, doc не указывает на текущий документ, при этом с kompas все в порядке. Вызываемые методы doc'а ошибок не вызывают, но и ничего не происходит.
Если переписать без потоков всё работает.
Как получить ksDocument2D из kompas.ActiveDocument2D в потоке или как подобное осуществить без потоков?

Можно использовать события Компаса, для потоков потребуется синхронизация.

SkinnyMan

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

Таймер можно и самому создать, хотя опрос состояния кнопок в Компасе идёт постоянно, а зачем, что то делать, если ничто не изменилось?

SkinnyMan

Цитироватьа зачем, что то делать, если ничто не изменилось?
Что-то вроде демонстрационно-обучающей программы.
ЦитироватьТаймер можно и самому создать
Как?

Можно использовать WinApi http://www.helloworld.ru/texts/comp/lang/visualc/vc2/10.htm или просто на форму кинуть компонент TTimer.
+ Благодарностей: 1