Это продолжение моего предыдущего вопроса ( Открыть книгу Excel с кодом vba - ошибка при уведомлении VSTO ), которая еще не решена.У меня свежий набор проблем с Excel Interop.Даже без каких-либо ошибок в файле Excel я вижу, что workBooks.Open иногда зависает бесконечно, в результате чего мое приложение зависает навсегда.Я использую следующий код для инициализации объекта Excel
public static class InterOpService
{
private static Application _excel;
public static Application Excel
{
get
{
try
{
_excel = (Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
_excel.Visible = true;
}
catch(Exception ex)
{
_excel = new Application { Visible = true };
}
return _excel;
}
}
}
Приведенный выше код возвращает мне объект Excel.Он также пытается избежать создания нескольких экземпляров объекта Excel.В следующем коде этот возвращенный объект используется
Application excel = InterOpService.Excel;
Workbooks workBooks = excel.Workbooks;
string file = fileName;
Workbook workBook = workBooks.Open(file, 0,
true,
5,
"",
"",
true,
XlPlatform.xlWindows,
"\t",
false,
false,
0,
true,
1,
0);
Одна из вероятных причин, по которой я вижу зависание workbooks.open, - совместное использование файлов.Вероятно, антивирусный сканер получает эксклюзивную блокировку файла, и мое приложение зависает при попытке открыть в это время.Проблема в том, что это случайное поведение, и я действительно изо всех сил пытаюсь повторить это. Другая проблема заключается в том, что мне нужно найти выход только с помощью Interop.