Наясно съм, че API на Autocad не трябва да се извикват/използват в многопоточност. Но какво ще кажете за извършване на многонишкова работа (в Autocad .Net плъгин), която не включва никакви специфични извиквания/типове на Autocad?
Ситуацията е следната: 1. някои CAD полилинии се извличат чрез API, техните свойства, които представляват интерес, се обвиват в потребителски типове и след това 2. В друг слой се правят някои многонишкови изчисления спрямо тези потребителски типове. 3. Приложението персонализира типовете, които записват своите резултати обратно в полилиниите на CAD чрез API на Autocad.
Само втора стъпка се извършва в много нишки.
Приложението използва метода StartTransaction(), за да получи обекта Transaction. Досега не съм имал сривове от много години. Но сега се опитвам да използвам StratOpenCloseTransasction() и се срива много пъти. Специално се срива, когато се извика Editor.Rengen(), тъй като мисля, че преминава през всеки обект в базата данни и може би някои са повредени. Наистина стесних проблема и една от причините очевидно е тази многонишковост.
Има ли някаква причина CAD да се срива при извикване на много нишки, въпреки че не са ангажирани API? Безопасно ли е да използвам многопоточност по този начин? StartTransaction() обработва ли обекти по-добре от StartOpenCloseTransaction по отношение на изхвърлянето им? Тъй като не съм имал сривове при това.
Много благодаря
Editor.Regen
. Това се дължи на преходни образувания. - person Maxence   schedule 02.09.2015