大图:我写了一个Autodesk发明者插件。在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与我手动启动时的工作方式完全相同。如何以编程方式调用它以便以相同的方式运行?
编辑: 这里有一些代码来演示purgeworkspace如何等待发明者。请记住,当我手动启动它以及从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));
}
答案 0 :(得分:1)
无论采取了哪些预防措施,某些内容仍然会锁定您的文件。也许具有打开文件句柄的进程不像“Inventor”那样命名?
您可以使用this question来解决这个问题。