C# DSO Framer Control Exception было выдано целью вызова

Спасибо, что нашли время, чтобы прочитать мой вопрос.

Я разрабатываю небольшое приложение, чтобы сделать следующее:

  1. Прочитайте каждый отчет.xlsm в определенном каталоге
  2. Захватить конкретное поле на основе разных типов отчетов
  3. Сохраните поля в объекте пользовательского класса
  4. Сохранить объект пользовательского класса в списке<>
  5. После прочтения всех отчетов.xlsm создайте новый отчет Tally из шаблона.
  6. Вывести данные из каждого объекта пользовательского класса в списке<> в новый отчет Tally

Это работает отлично. Но я добавил новую функцию, чтобы в случае возникновения ошибки исключения я мог предложить пользователю с помощью настраиваемого окна сообщения либо отредактировать, либо удалить документ, либо проигнорировать исключение и продолжить получать оставшиеся данные.

Когда пользователь выбирает "Редактировать", он вызывает файл класса, который динамически генерирует новую форму, добавляет элемент управления DSO Framer в новую форму, а затем открывает определенный файл из переданного параметра.

В первый раз, когда я получаю окно сообщения и выбираю "Изменить", оно правильно откроет новую форму и отобразит отчет.xlsm для редактирования. Как только я нажимаю кнопку Закрыть, он сохраняет изменения и продолжает обработку. Если я получаю свое сообщение во второй раз и выбираю "Изменить" (для того же файла.xlsm или нет), я получаю исключение:

"Исключение было выброшено целью вызова".

Я думал, что это может быть потому, что документ уже был открыт с помощью "Microsoft.Office.Interop.Excel", но первый файл.xlsm откроется, даже если он был открыт с помощью "Microsoft.Office.Interop.Excel". Я заметил, что при использовании "Microsoft.Office.Interop.Excel" у меня все еще был процесс Excel, запущенный в диспетчере задач после вызова функции Excel.Application.Quit() и использования Marshal.ReleaseComObject для объекта ExcelApp.

Если я завершу закрытие приложения и снова открою его, я смогу снова "Редактировать" первый документ, который запрашивает мое окно сообщения.

Все, что мне нужно, это иметь возможность делать, когда я выбираю опцию "Редактировать", это приостанавливать исполняемый код, отображать файл для редактирования пользователем, и после того, как он завершит редактирование, продолжайте выполнять код снова.

Пожалуйста, порекомендуйте.

Я просто попытался опубликовать здесь код, и он сказал, что я использовал слишком много строк. Какой лучший способ поделиться всем моим кодом?

0 ответов

Другие вопросы по тегам