2

com サーバーを実装する Delphi7 プログラムがあります。最近、いくつかの新しいデータベース クエリが原因で、プログラムの初期化が完了するまでの時間が多少長くなりました。プログラムの初期化とは、プログラムが着信 com 呼び出しを意味のある方法で処理できるようになるまでにかかる時間のことです。私の質問は、プログラムがまだ適切に初期化されていないときに、受信した com 呼び出しをどのように処理できるかです。呼び出しに含まれる情報を破棄することはできません。呼び出しは、プログラムが初期化されるまで待機する必要があります。ブール値の初期化変数を使用した単純な while ループで十分でしょうか? com 呼び出しがメイン VCL スレッドで実行されることを読んだので質問します。これは、while ループがプログラムをハングさせることを示唆しています (初期化も VCL スレッドで行われます)。

ミューテックスを使用して、同じスレッド内で実行されるコードを待機することはできませんよね?

別の言い方をすれば、com 呼び出しは、(com サーバーの) VCL スレッドの実行が完了するまで中断しますか、それとも同じスレッド内でのコードの同時実行はどのように機能しますか? お時間を割いていただきありがとうございます。

4

2 に答える 2

1

データベース ロジックをメイン スレッドの外に移動して、ブロックされないようにします。

于 2012-11-17T17:14:22.850 に答える