Открыть .dwg на нужном листе

Автор Тема: Открыть .dwg на нужном листе  (Прочитано 15444 раз)

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

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Открыть .dwg на нужном листе
« Ответ #15 : 15-05-2015, 15:46:17 »
Думаю что достаточно будет выполнить твой код из главного потока: http://adn-cis.org/ispolzovanie-potokov-dlya-fonovoj-obrabotki.html
В обозначенной по ссылке статье используется костыль из WinForm контрола, но возможно есть иной, более простой путь (предлагаемый вариант обозначен ниже)... Кроме того, перевод не корректен: задача и поток - это четыре совершенно разных человека.

Применительно к запуску в основном потоке: ну так можно методы Initialize() и Terminate() просто пометить атрибутом STAThread и будут они вызываться в основном потоке (поправьте меня, если я не прав). Ведь методы main приложений WinForms и WPF именно этим атрибутом и помечены. Или считаете, что этого будет не достаточно и нужно обязательно лепить костыль с контролом WinForms, обозначенный в статье?

И, откровенно говоря, я не понимаю, какое отношение потоки имеют к данному вопросу с кодом в методе Initialize(), ведь я не запрашивал создание дополнительного фонового потока.
« Последнее редактирование: 15-05-2015, 16:32:56 от Андрей Бушман »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Открыть .dwg на нужном листе
« Ответ #16 : 15-05-2015, 18:21:06 »
Кроме того, перевод не корректен: задача и поток - это четыре совершенно разных человека.
У слова "поток" в русском языке есть несколько значений. Правильнее было бы тогда переводить как "поток выполнения", но это слишком длинно. Классический же перевод для "thread" в контексте языков программирования, которому уже лет тридцать - "задача".
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Открыть .dwg на нужном листе
« Ответ #17 : 15-05-2015, 18:22:55 »
Применительно к запуску в основном потоке: ну так можно методы Initialize() и Terminate() просто пометить атрибутом STAThread и будут они вызываться в основном потоке (поправьте меня, если я не прав).
Не прав. Если бы это было так просто, то достаточно было бы пометить все необходимые методы этим атрибутом и тогда AutoCAD сразу же стал бы многозадачным (точнее стал бы поддерживать многозадачное обращение к своим объектам, в том числе и Database). :)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Открыть .dwg на нужном листе
« Ответ #18 : 15-05-2015, 18:36:48 »
Еще один из вариантов для проверки того, что чертеж уже полностью открыт - событие Database.DwgFileOpened
Но тут могут быть нюансы, так как если чертеж уже открыт до вызова метода Initialize(), то события Database.DwgFileOpened для уже открытого чертежа мы не дождёмся.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Открыть .dwg на нужном листе
« Ответ #19 : 16-05-2015, 13:17:28 »
Здесь тебе напомнили еще один вариант - использование события Application.Idle. А я бы для надежности объединил бы его с указанным выше мной методом Control.Invoke
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Открыть .dwg на нужном листе
« Ответ #20 : 18-05-2015, 10:48:43 »
Цитата: Александр Ривилис
Здесь тебе напомнили еще один вариант - использование события Application.Idle.
Спасибо. Нужно будет в блоге себе шпаргалку нацарапать - не в первый раз уже забываю эту информацию (об Application.Idle).

если чертеж уже открыт до вызова метода Initialize(), то события Database.DwgFileOpened для уже открытого чертежа мы не дождёмся.
Это я помню, поэтому данное событие не использую.

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Открыть .dwg на нужном листе
« Ответ #21 : 18-05-2015, 11:02:41 »
Классический же перевод для "thread" в контексте языков программирования, которому уже лет тридцать - "задача".
Классика, говорите...

1. Джеффри Рихтер "CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#", глава 25 "Потоки исполнения". В обозначенной главе везде "Thread" переводится как "поток". Не вижу "задачу".

2. Энтони Уильямс "Параллельное программирование на C++ в действии. Практика разработки многопоточных программ". В обозначенной книге слово "Thread" так же везде переводится как "поток".

3. Чарльз Петцольд "Программирование с использованием Microsoft Windows Forms. Новые возможности технологии Windows Forms". Стр 22 (описание атрибута STAThread) - и снова "thread" переводится как "поток".

4. Мэтью Мак-Дональю "WPF Windows Presentation Foundation в .NET 3.0 для профессионалов." Стр. 98, раздел "Многопоточная обработка". Та же самая картина: слово "Thread" везде переводится как "поток".

Обозначенные выше книги - это однозначно классика. Не знаю, откуда вы свою "классику" берёте... Я согласен с тем, что одинаковый перевод слов Stream и Thread - это очень плохо, но в книгах обычно вижу именно это.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Открыть .dwg на нужном листе
« Ответ #22 : 18-05-2015, 14:14:37 »
Я опираюсь на значительно более раннюю терминологию. Например, "Программирование для Windows NT", А.В. Фролов, Г.В.Фролов (серия БСП, "Диалог-МИФИ"), 1996г.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: Открыть .dwg на нужном листе
« Ответ #23 : 18-05-2015, 19:39:05 »
В старых лисп книжках тоже вперемешку "потоки вычислений" и "задачи". Но, там, сей термин имеет более общее значение - если выражаться .Net языком то любая последовательность (IEnumerable), даже,например, "строка" - string тоже может быть представлена как поток вычислений. Просто задачей ее обзывать уж совсем "абстрактно" получается.