Хорошо, вот в чем проблема, я использую соединение с использованием (соединение .... бла-бла), а затем, когда мой блок использования закончен, я хочу запустить приложение Excel следующим образом: System.Diagnostics.Process.Start ( excelFile);
Это работает ... иногда, в других случаях мой компьютер работает слишком быстро и до того, как файл полностью закроется, или соединение будет полностью закрыто, или что-то в этом роде, приведенное выше утверждение выполняется, и Excel открывает и говорит, что не может получить доступ файл.
Это происходит время от времени, если я его приостанавливаю, это работает чаще, но мне нужен способ проверить, смогу ли я получить доступ к файлу, прежде чем я получу к нему доступ.
Это не вызывает исключение, поэтому перехват исключения не возможен
я пробовал:
connection.Close();
connection.Dispose();
GC.Collect();
из которых никто не работал.
Я знаю, что любая проверка, как правило, будет иметь возможность возвратить, что файл доступен, и затем, перед тем, как открытая статистика может быть удалена, файл, используемый кем-то, это нормально. Просто нужен способ проверить.
Хорошо, я попробовал это:
Microsoft.Office.Interop.Excel.Application _app =
new Microsoft.Office.Interop.Excel.Application();
try
{
Workbook wbook = _app.Workbooks.Open(excelFile,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}
catch (COMException ex)
{
//The file can't be opened in Excel
}
finally
{
//close the workbook and release the resources (GC.Collect() et al as usual)
_app.Workbooks.Close();
GC.Collect();
}
System.Diagnostics.Process.Start(excelFile);
и я проходит, перехватывает исключение и затем переходит к команде запуска, где excel сообщает мне, что «не может получить доступ к« fileName »»