C# DSO Framer Control Exception было выдано целью вызова
Спасибо, что нашли время, чтобы прочитать мой вопрос.
Я разрабатываю небольшое приложение, чтобы сделать следующее:
- Прочитайте каждый отчет.xlsm в определенном каталоге
- Захватить конкретное поле на основе разных типов отчетов
- Сохраните поля в объекте пользовательского класса
- Сохранить объект пользовательского класса в списке<>
- После прочтения всех отчетов.xlsm создайте новый отчет Tally из шаблона.
- Вывести данные из каждого объекта пользовательского класса в списке<> в новый отчет 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.
Если я завершу закрытие приложения и снова открою его, я смогу снова "Редактировать" первый документ, который запрашивает мое окно сообщения.
Все, что мне нужно, это иметь возможность делать, когда я выбираю опцию "Редактировать", это приостанавливать исполняемый код, отображать файл для редактирования пользователем, и после того, как он завершит редактирование, продолжайте выполнять код снова.
Пожалуйста, порекомендуйте.
Я просто попытался опубликовать здесь код, и он сказал, что я использовал слишком много строк. Какой лучший способ поделиться всем моим кодом?