我有一个应用程序使用Webbrowser控件导航到一些供应商的网站和刮报告。由于一个供应商有多个帐户,因此我需要让浏览器结束会话并清除所有设置的Cookie。我正在使用针对wininet.dll的API调用,并且能够实现期望的结果。但是,间歇性地,我得到INTERNET_OPTION_END_BROWSER_SESSION的InternetSetOption上出现死锁。InternetSetOption死锁?
这是非常线性码和InternetSetOption从一个单独的线程在一个地方被调用。难以弄清楚的是,在调试中运行时,我很少能够重现该问题。只要我在VS之外编译和运行,它会很快发生。我通过在运行时将消息泵送到控制台来隔离它。
有几次,我已经能够捕捉在调试的问题,它只是显示InternetSetOption作为下一个语句,并坐镇,没有任何异常或错误,没有在输出窗口。 InternetSetOption应返回布尔值,但该程序不会再继续,我从来没有从API调用中获得任何回报。我试着查看抛出的最后一条错误消息,但在这种情况下,它并没有帮助,因为它从不抛出错误。
任何人有什么输入,我可以进一步做什么来调试?
声明如下:
[DllImport("wininet.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern bool InternetSetOption(
IntPtr hInternet,
int dwOption,
IntPtr lpBuffer,
int lpdwBufferLength);
而且通过所谓:
InternetSetOption(IntPtr.Zero, 42, IntPtr.Zero, 0);
这与C#有什么关系? – 2010-07-27 19:25:06
该应用程序是用C#编写的,包含一个Web浏览器控件 – kmfk 2010-07-27 19:35:36