トラブルシューティングc#webbrowserがajaxを使用したハングアップを制御する C#
コントロールは、完全なインターネットエクスプローラーインスタンスとは異なり、Ajaxコール中にフリーズを経験することがよくあります。この記事では、スクリプトの互換性に焦点を当てたソリューションについて説明しますWebBrowser
スクリプトの互換性の問題のアドレス指定
問題のルートは、多くの場合、コントロールのスクリプトエンジンと標準のIEブラウザの矛盾にあります。 これを緩和するために、機能制御を活用して、IEの動作をより密接に模倣するためのコントロールを構成します。 ここでは
設定が重要です。
WebBrowser
FEATURE_BROWSER_EMULATION
機能制御の実装(レジストリの変更)
次のコードスニペットは、管理者の特権を必要とせずに機能制御を実装する方法を示しています。
最適な機能設定
<code class="language-csharp">private void SetBrowserFeatureControlKey(string feature, string appName, uint value) { using (var key = Registry.CurrentUser.CreateSubKey( $@"Software\Microsoft\Internet Explorer\Main\FeatureControl\{feature}", RegistryKeyPermissionCheck.ReadWriteSubTree)) { key.SetValue(appName, (uint)value, RegistryValueKind.DWord); } }</code>
テストに基づいて、これらの機能制御設定は、コントロール内のAJAXパフォーマンスを向上させることをお勧めします:
WebBrowser
アプリケーションの手順
<code>FEATURE_BROWSER_EMULATION = 11000 FEATURE_AJAX_CONNECTIONEVENTS = 1 FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION = 1 FEATURE_MANAGE_SCRIPT_CIRCULAR_REFS = 1 FEATURE_DOMSTORAGE = 1 FEATURE_GPU_RENDERING = 1 FEATURE_IVIEWOBJECTDRAW_DMLT9_WITH_GDI = 0 FEATURE_DISABLE_LEGACY_COMPRESSION = 1 FEATURE_LOCALMACHINE_LOCKDOWN = 0 FEATURE_BLOCK_LMZ_OBJECT = 0 FEATURE_BLOCK_LMZ_SCRIPT = 0 FEATURE_DISABLE_NAVIGATION_SOUNDS = 1 FEATURE_SCRIPTURL_MITIGATION = 1 FEATURE_SPELLCHECKING = 0 FEATURE_STATUS_BAR_THROTTLING = 1 FEATURE_TABBED_BROWSING = 1 FEATURE_VALIDATE_NAVIGATE_URL = 1 FEATURE_WEBOC_DOCUMENT_ZOOM = 1 FEATURE_WEBOC_POPUPMANAGEMENT = 0 FEATURE_WEBOC_MOVESIZECHILD = 1 FEATURE_ADDON_MANAGEMENT = 0 FEATURE_WEBSOCKET = 1 FEATURE_WINDOW_RESTRICTIONS = 0 FEATURE_XMLHTTP = 1</code>
これらの設定を組み込んだメソッドを作成します(提供されている例と同様)。 重要なことに、前にこのメソッドを呼び出してください
コントロールは、通常、フォームのコンストラクター内で初期化されます。 これにより、AJAXリクエストが行われる前に設定が適用されます。機能制御を正しく構成することにより、コントロールとAJAXコールとの互換性を大幅に改善し、ハングアップを解決し、スムーズなスクリプトの実行を確保できます。
以上がAJAXコール中にC#Webbrowserコントロールがハングするのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。