全体像: Autodesk Inventor アドインを作成しました。Inventor の終了イベントで、purgeworkspace.exe という別のプログラムが起動します。purgeworkspace.exe は、Inventor が閉じられるまで待機し、Inventor が使用していたファイルを削除します。
以下は、purgeworkspace.exe を呼び出す関連するアドイン コードです。
//Run as admin
if (System.Environment.OSVersion.Version.Major >= 6)
{
Process p = Process.Start(Properties.Settings.Default.exePath);
p.StartInfo.Verb = "runas";
}
アドインから purgeworkspace.exe を起動すると、ファイルが使用中であることを示す IOException が発生します。ただし、exeをダブルクリックしてpurgeworkspace.exeを手動で実行すると、毎回完璧に機能します。これは許可によるものだと私は信じていますが、何が原因かはわかりません。ご覧のとおり、既にexeを管理者として実行しようとしていますが、問題は解決していません。
手動で起動すると、purgeworkspace.exe は意図したとおりに動作します。同じように動作するようにプログラムで呼び出すにはどうすればよいですか?
編集:パージワークスペースが発明者を待つ方法を示すコードがいくつかあります。このコードは、手動で起動したときと、Inventor アドインから実行したときの両方で実行されることに注意してください。
static void Main()
{
while (IsProcessOpen("Inventor"))
{
System.Threading.Thread.Sleep(50);
}
}
private static bool IsProcessOpen(string name)
{
return Process.GetProcesses().Any(clsProcess => clsProcess.ProcessName.Contains(name));
}