如果webBrowser控件挂起,则停止进程

时间:2014-10-02 10:26:20

标签: c# browser hang

我正在使用WebBrowser control

大部分时间都可以正常工作,但是导航到新页面或等待加载新页面有时会挂起。

有没有办法抓住这个?即如果页面在一段时间后无法导航或加载,则终止该过程?

我正在使用 - webBrowser1_DocumentCompleted事件来获取页面按预期加载/导航时的某些行为但不确定如果页面挂起时如何捕获?

2 个答案:

答案 0 :(得分:1)

Maby你应该尝试实现某种超时逻辑吗?关于此,网上有很多样本。 F.E. this one

此外,您可能对WebBrowserControl ProgressChanged

的此事件感兴趣

答案 1 :(得分:0)

这是因为webbrowser组件是Internet Explorer的非常基本的模型,它被困在ajax页面上。您可以明确解决此问题以使用最新版本的Internet Explorer ...使用此代码...

       try
        {
            string installkey = @"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
            string entryLabel = "YourExe.exe";
            string develop = "YourExe.vshost.exe";//This is for Visual Studio Debugging... 
            System.OperatingSystem osInfo = System.Environment.OSVersion;

            string version = osInfo.Version.Major.ToString() + '.' + osInfo.Version.Minor.ToString();
            uint editFlag = (uint)((version == "6.2") ? 0x2710 : 0x2328); // 6.2 = Windows 8 and therefore IE10

            Microsoft.Win32.RegistryKey existingSubKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(installkey, false); // readonly key

            if (existingSubKey.GetValue(entryLabel) == null)
            {
                existingSubKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(installkey, true); // writable key
                existingSubKey.SetValue(entryLabel, unchecked((int)editFlag), Microsoft.Win32.RegistryValueKind.DWord);
            }
            if (existingSubKey.GetValue(develop) == null)
            {
                existingSubKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(installkey, true); // writable key
                existingSubKey.SetValue(develop, unchecked((int)editFlag), Microsoft.Win32.RegistryValueKind.DWord);
            }
        }
        catch
        {
            MessageBox.Show("You Don't Have Admin Previlege to Overwrite System Settings");
        }
    }

右键单击你的Exe。和vshost.exe并以管理员身份运行以更新此应用程序的注册表....