Comment réparer "La ressource demandée est en cours d'utilisation. (Exception de HRESULT: 0x800700AA)"
6 réponses
le contrôle WebBrowser est considéré comme "utilisé" si soit une action de navigation est en cours de traitement, soit toute boîte de dialogue de blocage du contrôle est actuellement ouverte (y compris le menu contextuel, les alertes Javascript, la boîte de dialogue de connexion NTLM, etc.). Vous pouvez utiliser le WebBrowser.IsBusy
propriété pour détecter ces états.
Si, en raison actuellement incomplète action de navigation, vous pouvez essayer d'arrêter la navigation en cours (si vous voulez arrêter lorsque la page n'est pas terminée chargé) ou ajouter le nouveau navigation vers une file d'attente de requête et utilisation d'une minuterie pour attendre WebBrowser.IsBusy
retourne false.
si au lieu de cela l'état occupé est dû à un ou plusieurs dialogues de blocage ouverts, vous pourriez faire la même technique d'attente et peut-être Messagebox.Show()
l'utilisateur un message indiquant que la navigation en attente est retardée en raison d'une fenêtre de dialogue ouverte.
j'ai eu ce même problème. Appel de WebBrowser.Stop()
n'a pas aidé, et WebBrowser.IsBusy
n'est jamais devenu faux.
Il s'avère que si la page crée toute sorte de dialogue (alert()
les popups, les erreurs javascript, NTLM connexion popups, etc.) vous ne pouvez pas naviguer loin de la page tant que la boîte de dialogue n'est pas fermée.
ma solution était d'empêcher les dialogues de se manifester en premier lieu. Apparemment prévenir tous ces popups est simple; juste set
webBrowser.ScriptErrorsSuppressed = true;
bool go = false;
string SiteContent1 = string.Empty;
string SiteContent2 = string.Empty;
int index = 0;
WebBrowser wb = new WebBrowser();
void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
try
{
if (go)
{
SiteContent2 = wb.DocumentText;
// Code to compare to contents of the webbrowser
index++;
go = false;
steps = 1;
}
if (!go)
{
if (index >= TotalSiteCount)
{
Stop();
}
else if (steps == 1)
{
wb.Navigate(UrltocompareList[index].Url1);
}
else if (steps == 2)
{
SiteContent1 = wb.DocumentText;
wb.Navigate(UrltocompareList[index].Url2);
go = true;
}
steps++;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
UrltocompareList est une collection de 2 sites à comparer.
Totalsecount est le nombre D'éléments dans UrltocompareList.
La forme pour cette hériter IOleClientSite pour enlever des médias tels que des images, des vidéos et aucun téléchargement x actif pour avoir un temps de rendu plus rapide dans le contrôle webbrowser.
j'utilise cette méthode au lieu du système.net.webclient pour obtenir le html d'une page Web, puis les comparer.
J'ai eu cette erreur lors de l' ça touche la Banque mondiale.Méthode de navigation.
un problème que j'ai rencontré lors de l'exécution des tests specflow avec watin dans windows 10 est que win10 par défaut utilise MS Edge, donc je n'avais jamais ouvert IE, et lorsque watin a commencé IE était bloqué sur l'invite pour utiliser les paramètres par défaut. La sélection des options, la fermeture du navigateur et l'exécution de tests ont encore fonctionné pour moi.
Juste quelque chose à regarder
Premier Essai
1 -Veuillez Vérifier Naviguer URL (si vous vérifiez, vérifiez une nouvelle fois compilé un dossier)
2 - Supprimer le Contrôle WebBrowser et d'Ajouter de Nouvelles
Moi oublier copie du fichier d'origine App.Chemin + "\erreur.code html" et de voir ce problème.
Méthode De Garantie
je corrige cette erreur dans VB6
Ajouter WebBrowserControl wb(0) (Nom de la bm , de l'Indice=0)
Et Avant Toujours Naviguer
For i = 1 To wb.UBound
Unload wb(i)
Next
Load wb(1)
wb(0).Visible = False
wb(1).Visible = true
wb(1).Navigate URL
Cela peut être résolu assez facilement. Cette erreur se produit lorsque le navigateur commet une action alors qu'il exécute déjà une action. Par exemple, vous naviguez vers un site Web pendant que vous cliquez sur le navigateur Web. Pour résoudre ce problème, j'ai fait:
//if my webbrowser isn't performing any actions
if(!myWebBrowser.IsBusy)
{
//Navigate
myWebBrowser.Navigate("http://www.google.com");
}