Тема: Ошибка с ObjectARX (остановка программы)

Здравствуйте..
Имеется вот такой код на VS 2010 C#, ObjectARX, Acad 2009 

        [LispFunction("ConcatStrings")]
        static public string ConcatStrings(ResultBuffer args)
        {
            StringBuilder sb = new StringBuilder();

            foreach (TypedValue rb in args)
            {
                if (rb.Value is string)
                    sb.Append((string)rb.Value);
            }

            Document doc = Ac.Application.DocumentManager.Open("D:\\1\\Temp.dwg", false, null);
            doc.SendStringToExecute("(setq a 12) ", true, false, false);
            doc.SendStringToExecute("_close ", true, false, false);

            return sb.ToString();
        }

Суть проблемы состоит в том что при вызове данной лиспфункции программа останавливается на вот этой строчке -

doc.SendStringToExecute("(setq a 12) ", true, false, false);

но она выполняется. Не выполяется уже последующие, а именно метод _Close. При попытке сменить лиспфункцию (setq a 12) на другую возникает такая же штука - остановка программы.

Использую именно метод - LispFunction, поскольку мне необходимо будет получить из Autocad строку с именем файла для дальнейшей обработки. Аналогичный код только с объявлением CommandMethod (без параметра) - работает на ура.

В чем может быть проблема?

Re: Ошибка с ObjectARX (остановка программы)

Ошибок несколько:
1. Ошибся форумом. В этом форуме обсуждают только чистый ObjectARX (native C++). Тебе сюда: https://www.caduser.ru/forum/forum49.html
2. doc.SendStringToExecute выполняется асинхронно к твоему коду (т.е. только после того как завершится весь твой код)

Re: Ошибка с ObjectARX (остановка программы)

Александр Ривилис пишет:

doc.SendStringToExecute выполняется асинхронно к твоему коду (т.е. только после того как завершится весь твой код)

а выполнение программы то, почему тогда останавливается?

Re: Ошибка с ObjectARX (остановка программы)

Дмитрий пишет:

а выполнение программы то, почему тогда останавливается?

Почитай справку по методу SendStringToExecute.
Ну а если в двух словах, то так делать не следует. Ищи другие способы.