【问题标题】:How can i delete the file that has been navigated in a webbrowser control?如何删除已在 webbrowser 控件中导航的文件?
【发布时间】:2011-07-26 14:54:25
【问题描述】:

如何删除浏览器中浏览过的文件? 错误提示“它正在被另一个进程使用”

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

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

【问题讨论】:

    标签: c# winforms browser


    【解决方案1】:

    通常人们建议这个代码:

    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;
        }
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试过通过 Internet Explorer 缓存(使用 FindFirst/NextUrlCacheEntry API)查找文件并使用 DeleteUrlCacheEntry 将其删除?有预先编写的示例说明如何循环并在新的上进行删除,只需 google 即可。

      您将获得 3 种类型的缓存,以“Cookie:”开头,另一种以“Visited:”开头 - 仅代表访问过的站点列表(它不是历史记录,不要混淆两者),最后一种类型只是以 http:// 或 https:// 开头的 url 形式出现。循环播放后,您可以选择要删除的内容。

      如果您有任何其他问题,请告诉我,这样做应该可以消除“文件正在使用”问题,如果没有,请在执行缓存删除之前 .dispose 或卸载您的 webbrowser 控件(但您可能不需要)。

      【讨论】:

        【解决方案3】:

        如果您需要在文件被删除后保留“预览”,您可能别无选择,只能复制文件并导航到副本。

        如果您愿意在删除文件时清除“预览”,请先离开它:

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

        这应该可以解决问题。

        【讨论】:

        • 没有用,它仍然被另一个进程使用。杀掉“AcroRd32.exe”进程怎么样?
        • 哎哟。这很烦人。有这样的进程在运行吗?我不知道 Acrobat 在浏览器中是如何工作的。它是实际的 exe 还是 ActiveX 控件?
        • 是的,它是一个实际的 exe。我还杀死了所有与 acrobat 相关的进程。还是不行。
        猜你喜欢
        • 1970-01-01
        • 2016-08-06
        • 1970-01-01
        • 2016-11-19
        • 1970-01-01
        • 2010-11-29
        • 1970-01-01
        • 1970-01-01
        • 2010-11-28
        相关资源
        最近更新 更多