2016-09-05 11 views
0

Excel用のDelphiプラグインで作業しています。また、AddIn Express COM Library(優れたBTW)も使用します。コードはうまくいきました。新しいフォームを呼び出す別のリボンメニューオプションを追加しました。このフォームにはRESTコントロール(クライアント、レスポンスなど)があります。コンポーネントは互いに結びついていますが、URLに関する情報はありません。これは実行時に設定されます。私は私のプロジェクトをコンパイルする。Excelで突然表示されるDelphi - OSローダーロックの問題

  • スタンドアロン(デバッガの外)で実行すると正常に動作します。 URLリソースを設定し、RESTサービスを呼び出し、データをメモに表示します。私は、Delphiの中からそれを実行した場合
  • は、私はすぐにアセンブリコードにダンプを取得し、私はOSローダーロックの内部イベントログ

    」しようとすると、管理の実行中にエラーメッセージが表示されます。そのアプリケーションがハングアップすることがありますやって以来のDllMainまたはイメージイニシエーション関数内のマネージコードを実行しようとしないでください。」

、特に(これは正常に動作するために使用されるが、私はちょうど、フォームを追加しました親フォームを追加し、RESTコンポーネント、RestAdapter、TDatasource、およびClientDataSetを追加し、継承しました。グーグルでは、これはデバッガの問題であり、少なくともVisual StudioではこれがExceptions/Ignore Loader Lockでオフにできることがわかりました。私はDelphi(Seattle)デバッガ内で類似の機能を見つけることができません。

問題なくアドインエクスプレスを実行しました。私のプラグインは問題なく実行されていましたが、問題なくスタンドアロンのRESTデモアプリケーションを実行しました。その組み合わせがこの問題を引き起こす可能性はありますか?デバッガのローダロックのチェックを無効にする方法はありますか?それが役に立った場合、イベントログの "OS Loader Lock"メッセージの前の最後のメッセージに、そのモジュール:CSCAPI.dllがロードされたことが示されます。 RESTコンポーネントを動的に作成する必要があるかどうかは疑問です。私の疑念は、これらのコンポーネントは、アプリケーション(別名Excelのプラグイン)が起動したときに作成され、何かがデバッガを動かすように初期化されているということです...

答えて

0

私は最終的に何が起こったのかを解決しました。私は別のExcelプラグインを購入してインストールしました。それが私の問題を引き起こしていたことでした。どうやらそれは私の問題を引き起こしていた初期化ルーチン内のコードを使用しています。そのプラグインを無効にすると、私のコードは正常に動作します。これはRESTコンポーネントの問題ではありませんでした。

0

1つのコードあなたのinitializationユニットの責任があります。このコードはDllMain関数から呼び出されます。管理された実行をDllMainから試みると、本当に問題が発生します。

私のAddInExpressモジュールでは、すべてinitializationセクションは空です。初期化は他の場所で実行されます。私はそれが熟考することにイライラするように見えますが、あなたは本当にあなたのDllMainで遠く離れた何もしてはいけません。

initializationセクションに責任があることがわかるまで、次にコードを削除することをお勧めします。使用しているEmbarcadero RESTコンポーネントなど、Embarcaderoのライブラリコードであっても、プロジェクト内のどのユニットにも責任があります。それがあなたの出発点です。ソリューションに関しては、いったん問題を切り分けてしまえばよく考えてください。

+0

@ David - 考えてくれてありがとうございますが、私はINITIALIZATIONルーチンに注意するようにしました。私は2つの.pasファイルを持っていました。私もFINALIZATIONルーチンを持っていたので、1つは宣言されました。もう1つは信じられないほど些細でした。それにかかわらず、私はそれをコメントアウトしました。グローバル検索を行うと、他の初期化が表示されません。問題は依然として存在します。この問題は、RESTコンポーネントを追加したときにのみ表示されたので、次のステップはおそらくそれらを削除し、エラーが消えてしまうかどうかを確認することです。 – user1009073

関連する問題