如何删除已在webbrowser控件中导航的文件?

时间:2011-03-31 05:21:12

标签: c# winforms browser

如何删除已在webbrowser中导航的文件? 错误说“正在被另一个进程使用”

preview_wb.Navigate(@"C:\mypdf.pdf");

private void close_btn_Click(object sender, EventArgs e)
{
    preview_wb.Stop();
    File.Delete(@"C:\mypdf.pdf");
}

3 个答案:

答案 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控件(但是你可能不需要)。

相关问题