我已经确定了执行此操作的方法。
http://support.microsoft.com/kb/317114描述了启动访问过程的基本步骤。
我已将Process设置为类变量,而不是ShellGetApp方法的局部变量。这样,当我调用Quit函数进行访问时,如果由于某种原因而没有关闭,则可以显式终止该进程。
app.Quit(Access.AcQuitOption.acQuitSaveAll);
if (!accessProcess.HasExited)
{
Console.WriteLine("Access did not exit after being asked nicely, killing process manually");
accessProcess.Kill();
}
然后,我在这里使用了方法超时功能来给访问调用超时。如果超时,我也可以终止访问过程(超时可能是由于弹出的对话框窗口引起的,并且我不希望该过程永远挂起。我在这里得到了超时方法。