Excelがファイルを使用していることを検知する方法
Excelがファイルの編集を終えたことを検知したいのですが、Excelプロセスの終了検知も、開いているファイルのリード権をポーリングする方法でも誤検知してしまいます。
確実に編集を終えたことを検知する方法はないのでしょうか。
今のところ想像ですが、
https://support.microsoft.com/en-us/kb/981094/ja
の現象で、excelが上書き保存のタイミングでxlsxファイルを一度手離す気がしています。
コードですが以下のような感じで、終了監視しています。
System.Diagnostics.Process p = System.Diagnostics.Process.Start(filename);
if (p != null)
{
p.WaitForExit();
while (System.IO.File.Exists(filename))
{
System.Threading.Thread.Sleep(1000);
try
{
using (System.IO.FileStream fs =
new System.IO.FileStream(
filename,
System.IO.FileMode.Open,
System.IO.FileAccess.Read,
System.IO.FileShare.None))
{
break;
}
}
catch
{
continue;
}
}
}
else
{
while (System.IO.File.Exists(filename))
{
System.Threading.Thread.Sleep(1000);
try
{
using (System.IO.FileStream fs =
new System.IO.FileStream(
filename,
System.IO.FileMode.Open,
System.IO.FileAccess.Read,
System.IO.FileShare.None))
{
break;
}
}
catch
{
continue;
}
}
}
よろしくお願いします。