Delphi 7 で最初に開発されたアウトプロセス COM サーバーがあり、その後 D2006 で、最近 XE3 で再コンパイルされました。XE3 バージョンでは、リクエストは 1 つずつ処理されます。別のプロセスが進行中の場合、ObjectCount は増加しますが、2 番目のプロセスは最初のプロセスが終了するまで処理されません。D7/D2006 バージョンは、リクエストを同時に処理しました。
サーバーはデータベースを維持します。ほとんどのリクエストは非常に迅速に処理されますが、1 分以上かかるものもあります。アクティビティ ログを表示するメモ付きのフォームがあり、それが UI 全体です。ここで他にどのような情報が役立つかわかりません。
XE3 バージョンの動作が異なる理由はありますか? または、一般的に、2 番目のサーバー オブジェクトが最初のサーバー オブジェクトの終了を待機するのはなぜでしょうか?
これが例です。XE5 をインストールし、VCL アプリを作成し、1 つのメソッドで COM オブジェクトを追加し、テスト クライアントを作成しました。一度に 1 つの要求を処理しました。D2006 で同じプロジェクトをコンパイルし (単位のプレフィックスを削除するだけでした)、それらを同時に処理しました。
私は何を間違っていますか?
unit Unit2;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
Windows, ActiveX, Classes, ComObj, Project1_TLB, StdVcl;
type
TTest = class(TTypedComObject, ITest)
protected
function Method1(N: Integer): HResult; stdcall;
end;
implementation
uses ComServ;
function TTest.Method1(N: Integer): HResult;
var I: Integer;
begin
for I := 1 to N do
Sleep( 1000);
end;
initialization
TTypedComObjectFactory.Create(ComServer, TTest, Class_Test,
ciMultiInstance, tmFree);
end.