J'ai une application qui utilise le contrôle de Webbrowser pour naviguer vers quelques sites de fournisseurs et pour rapporter des rapports. Parce qu'il y a plusieurs comptes avec un fournisseur, j'ai besoin que le navigateur termine sa session et efface tout ensemble de cookies. J'utilise des appels API à wininet.dll pour les deux et je suis en mesure d'atteindre le résultat souhaité. Cependant, par intermittence, j'obtiens ce qui semble être un blocage sur InternetSetOption pour INTERNET_OPTION_END_BROWSER_SESSION.InternetSetOption blocage?
Il s'agit d'un code très linéaire et InternetSetOption est appelé à partir d'un seul thread au même endroit. Ce qui le rend difficile à comprendre, c'est que pendant le débogage, je n'ai que très rarement réussi à reproduire le problème. Dès que je compile et que je cours en dehors de VS, cela arrivera peu de temps après. Je l'ai isolé à cela en pompant des messages sur la console pendant son fonctionnement.
Les quelques fois où j'ai été capable d'attraper le problème lors du débogage, il affiche simplement InternetSetOption comme instruction suivante et s'assied, sans exception ni erreur, rien dans la fenêtre de sortie. InternetSetOption devrait renvoyer un booléen, mais le programme n'ira pas plus loin et je ne reçois jamais aucun retour de l'appel d'API. J'ai essayé de regarder le dernier message d'erreur lancé, mais dans ce cas, il n'aide pas, car il ne jette jamais une erreur.
Quelqu'un at-il des commentaires sur ce que je peux faire pour déboguer cela?
Déclaré comme:
[DllImport("wininet.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern bool InternetSetOption(
IntPtr hInternet,
int dwOption,
IntPtr lpBuffer,
int lpdwBufferLength);
Et appelé par:
InternetSetOption(IntPtr.Zero, 42, IntPtr.Zero, 0);
Qu'est-ce que cela a à voir avec C#? –
L'application a été écrite en C# et inclut un contrôle Webbrowser – kmfk