我有一個應用程序使用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