如何删除已在webbrowser中导航的文件? 错误说“正在被另一个进程使用”
preview_wb.Navigate(@"C:\mypdf.pdf");
private void close_btn_Click(object sender, EventArgs e)
{
preview_wb.Stop();
File.Delete(@"C:\mypdf.pdf");
}
答案 0 :(得分:3)
通常人们建议使用此代码:
webBrowser.Navigate("about:blank");
while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
File.Delete(fileName);
我不喜欢它。我更喜欢处理DocumentCompleted事件。
void DeleteFile()
{
needToDeleteFile = true;
webBrowser.Navigate("about:blank");
}
void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (needToDeleteFile)
{
File.Delete(fileName);
needToDeleteFile = false;
}
}
答案 1 :(得分:1)
如果您需要"预览"要在删除文件后继续存在,您可能无法选择复制文件并导航到副本。
如果您愿意清除"预览"当文件被删除时,首先离开它:
private void close_btn_Click(object sender, EventArgs e)
{
preview_wb.Navigate("about:blank");
File.Delete(@"C:\mypdf.pdf");
}
这应该可以解决问题。
答案 2 :(得分:0)
您是否尝试通过Internet Explorer缓存(使用FindFirst / NextUrlCacheEntry API)并使用DeleteUrlCacheEntry删除它?有关于如何循环并在新内容上进行删除的预先编写的示例,只需谷歌。
您将获得3种类型的缓存,以“Cookie:”开头,另一种以“Visited:”开头 - 它只代表访问过的网站列表(不是历史,不要混淆两者),最后一种类型只是以网址的形式出现,以http://或https://开头。循环完成后,您可以选择要删除的内容。
如果您有任何进一步的问题请告诉我,这样做应该摆脱“正在使用的文件”问题,如果没有,或者。在执行缓存删除之前设置或卸载您的webbrowser控件(但是你可能不需要)。