が問題だ、私は(接続....何とか何とか)を使用して接続を使用して、私は開始したいかけて、私はブロックを使用した後でこのようaplicationエクセル:System.Diagnostics.Process.Start(excelFile)。チェックし、それは
時には、コンピュータが速すぎて、ファイルが完全に閉じる前に、または接続が完全に終了する前に、上記の文がエキスパートされ、開くことができないファイルにアクセスします。
これは私がそれを一時停止した場合、それはより頻繁に動作し、オンとオフが起こるが、私は私がそれにアクセスする前に、ファイルにアクセスできるようにするつもりかどうかを確認する方法が必要です。
これには例外をキャッチすると、私が試したオプション
はありませんが、例外をスローしません:働いている
connection.Close();
connection.Dispose();
GC.Collect();
たなしの。
は、私がどのチェックが最もlikleyファイルが利用可能であり、オープンなステートメントが誰かによって使用されているファイルをexicuedすることができます前に、その後、罰金thatsのことを返すのpossabilityを持っていることがわかっています。チェックするだけの方法が必要です。
私はこの試みたOK:
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が、それは
私の答えはこちらをご覧ください:http://stackoverflow.com/questions/11240058/check-to-see-if-excel-is-open-from-another-office-2010-app/18715218#18715218 –