Как я могу удалить файл, который был перемещен в элементе управления веб-браузера? - PullRequest
6 голосов
/ 31 марта 2011

Как я могу удалить файл, который был перемещен в веб-браузере?Ошибка говорит: «Используется другим процессом»

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

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

Ответы [ 3 ]

3 голосов
/ 28 марта 2014

Обычно люди предлагают этот код:

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 голос
/ 31 марта 2011

Если вам необходимо, чтобы «предварительный просмотр» сохранялся после удаления файла, у вас, вероятно, нет другого выбора, кроме как скопировать файл и перейти к копии.

Если вы хотите очистить «предварительный просмотр» при удалении файла, просто сначала отойдите от него:

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

Это должно сработать.

0 голосов
/ 31 августа 2012

Вы пытались найти файл через кеш в Internet Explorer (используя API FindFirst / NextUrlCacheEntry) и удалить его с помощью DeleteUrlCacheEntry? Существуют заранее написанные примеры того, как перебрать и удалить новое, просто зайдите в Google.

Вы получите 3 типа кеша, начиная с «Cookie:», другой - с «Посещенных:» - который просто представляет список посещенных сайтов (это не история, не путайте два), и последний тип просто приходит в виде URL-адреса, начинающегося с http: // или https: //. Выполнив цикл, вы можете выбрать, какие из них вы хотите удалить.

Дайте мне знать, если у вас есть какие-либо дополнительные вопросы, если вы сделаете это таким образом, это избавит вас от проблемы "файл используется", если нет, либо .dispose, либо выгрузите ваш элемент управления веб-браузера перед выполнением удаления кэша (но вы вероятно, не нужно будет).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...