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

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

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

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

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

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

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

Работа с активным объектом

Автор feron, 21.11.24, 00:08:39

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

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

feron

Доброго вечера!

Есть инородный компонент с которым работаю из под vb net. В нем не предусмотрена асинхронная многопоточная работа. Однако у меня есть в этом необходимость но любая попытка возвращается ошибкой -
Необработанное исключение типа "System.AccessViolationException"
Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.

Второй поток при работающем первым не хочет работать. Как быть ?

Lemieux

Надо видеть контекст. В своё время я обманывал AutoCAD, запуская его в Parallel.Invoke, но там была важна очередь запуска. Сначала надо было запускать на выполнение кода из AutoCAD, а потом уже выполнения кода по работе с xlsx файлами.
+ Благодарностей: 1

feron

#2
Using Cad.Session()
    CurrentSession = Cad.Open("./cadfile")
    Parallel.Invoke(
    Sub()
        CurrentSession.InvokeMethod("function_one")
    End Sub,
    Sub()
        ' Задержка перед запуском второй функции
        Threading.Thread.Sleep(2000)
        CurrentSession.InvokeMethod("function_two")
    End Sub
)
End Using

Cad.Session и CurrentSession не дают работать в многопотоке
тут проблема в том что function_two зависима от работы function_one то есть function_two не выполнит свою работу пока function_one не будет запущена и работать.


feron

#3
Похоже "штатными" средствами VB Net не получится и тут нужен HappyHack(*)

В функции function_one реализовать какую то подфункцию поиска в системе(наличие или содержимое файла/ ключа в реестре и тд) сигнала остановки -> мда уж колхоз.

Как в песне - Каламбия пикчерс не представляет как программистам перфекционистам тяжко бывает..