問題タブ [loaderlock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - Delphi - Excel で OS ローダー ロックの問題が突然発生する
Excel用のDelphiプラグインに取り組んでいます。また、AddIn Express COM ライブラリ (素晴らしいところで) も使用します。コードは正常に機能していました。新しいフォームを呼び出す別のリボン メニュー オプションを追加しました。このフォームには REST コントロール (Client、Response など) があります。コンポーネントは互いに関連付けられていますが、URL に関する情報はありません。これは実行時に設定されます。プロジェクトをコンパイルします。
- スタンドアロン (デバッガーの外部) で実行すると、問題なく動作します。URL リソースの設定、REST サービスの呼び出し、メモへのデータの表示を行います。
- Delphi 内から実行すると、すぐにアセンブリ コードにダンプされ、イベント ログにエラー メッセージが記録されます。
「OS ローダー ロック内でマネージド実行を試みています。アプリケーションがハングする可能性があるため、DllMain またはイメージ開始関数内でマネージ コードを実行しようとしないでください。」
以前は問題なく動作していましたが、フォームを追加しました (具体的には、REST コンポーネント、RestAdapter、TDatasource、および ClientDataSet を含む親フォームを追加し、それから継承しました)。Google では、これはデバッガーの問題であり、(少なくとも Visual Studio では) Exceptions / Ignore Loader Lock を介してオフにできるようです。Delphi (Seattle) デバッガー内で同様の機能を見つけることができません。
AddIn Express を問題なく実行し、プラグインを問題なく実行し、スタンドアロン REST デモ アプリを問題なく実行しました。組み合わせがこの問題を引き起こしている可能性はありますか? ローダーロックのデバッガーチェックを無効にする方法はありますか? それが役立つ場合、イベント ログの「OS Loader Lock」メッセージの前の最後のメッセージは、モジュール: CSCAPI.dll がロードされたことを示しています。REST コンポーネントを動的に作成する必要があるかどうか疑問に思っています。私の疑いでは、これらのコンポーネントはアプリ (別名、私のプラグインを使用した Excel) の起動時に作成され、デバッガーを混乱させるような方法で何かが初期化されているということです...