我尝试使用默认浏览器打开临时 HTML 文件,然后删除该文件:
var tempFileName = Path.ChangeExtension(Path.GetTempFileName(), "html");
// I save document to temp file here...
Process process = null;
try
{
process = Process.Start(tempFileName);
}
catch (Win32Exception)
{
}
catch (ObjectDisposedException)
{
}
catch (FileNotFoundException)
{
}
var worker = new BackgroundWorker();
worker.DoWork += (s, we) => {
if (process != null)
{
process.WaitForExit();
try
{
File.Delete(tempFileName);
}
catch (IOException)
{
}
}
};
worker.RunWorkerAsync();
不幸的是,Process.Start
如果进程未启动但使用了正在运行的进程(在 Google Chrome 中打开新选项卡),则返回 null。所以我等不及该进程退出了。
那么,一个普遍的问题是:如何完成任务?如何向用户显示临时 HTML 文件并在查看后将其删除?
最佳答案
如果您使用 ProcessStartInfo
并设置 UseShellExecute
然后您可以像您现在尝试的那样直接“运行”HTML 来启动用户的默认浏览器。我还没有尝试过,但它应该会返回一个 Process
以确定用户何时关闭了浏览器。
我仍然会为一些您无法控制的边缘情况做准备。例如,如果他们让浏览器保持打开状态但关闭正在监视浏览器的应用程序。到那时你会让浏览器保持活力吗?你杀了它吗?什么时候删除 HTML 文件?使用 Web Browser 可能会更好控制。那么您甚至不必担心其他进程或浏览器兼容性。您甚至可以将 HTML 内容流式传输到控件,并且以后没有要删除的文件。
关于c# - 如何使用默认浏览器打开 HTML 文件并在用户查看后将其删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30869497/