6 votes

Comment puis-je supprimer le fichier qui a été navigué dans un contrôle de navigateur web ?

Comment puis-je supprimer le fichier qui a été navigué dans le navigateur web ? L'erreur dit "Il est utilisé par un autre processus".

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

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

4voto

Der_Meister Points 336

Habituellement, les gens suggèrent ce code :

webBrowser.Navigate("about:blank");
while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
    Application.DoEvents();

File.Delete(fileName);

Je n'aime pas ça. Je préfère gérer l'événement DocumentCompleted.

void DeleteFile()
{    
    needToDeleteFile = true;
    webBrowser.Navigate("about:blank");
}

void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (needToDeleteFile)
    {
        File.Delete(fileName);
        needToDeleteFile = false;
    }
}

1voto

Matt Hamilton Points 98268

Si vous avez besoin que l'"aperçu" persiste après la suppression du fichier, vous n'avez probablement pas d'autre choix que de copier le fichier et de naviguer vers la copie à la place.

Si vous souhaitez effacer l'"aperçu" lorsque le fichier est supprimé, il vous suffit de vous éloigner de celui-ci :

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

Cela devrait faire l'affaire.

0voto

Erx_VB.NExT.Coder Points 2299

Avez-vous essayé de trouver le fichier via le cache d'Internet Explorer (en utilisant l'API FindFirst/NextUrlCacheEntry) et de le supprimer avec DeleteUrlCacheEntry ? Il existe des exemples pré-écrits sur la façon de boucler et d'effectuer la suppression sur le nouveau, il suffit de le googler.

Vous obtiendrez 3 types de cache, l'un commençant par "Cookie : ", un autre commençant par "Visited : " - qui représente simplement la liste des sites visités (ce n'est pas l'historique, ne confondez pas les deux), et le dernier type se présente simplement sous la forme d'une url commençant par http:// ou https://. Une fois que vous avez bouclé la liste, vous pouvez choisir ceux que vous voulez supprimer.

Faites-moi savoir si vous avez d'autres questions, en procédant de cette manière, vous devriez vous débarrasser du problème du "fichier utilisé", si ce n'est pas le cas, soit .dispose, soit déchargez le contrôle de votre navigateur web avant de procéder à la suppression du cache (mais vous n'en aurez probablement pas besoin).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X