0

現在、サービスにCOMDLLを使用するWCFサービスがあります。COMオブジェクトは一度だけロードされ、シングルトンを介して保存されます。問題は、最初の実行でCOMオブジェクトをロードするのに約1分かかることです。WCFサービスは、Windowsサービスを介してホストされます。Windowsサービスの起動を介してCOMオブジェクトシングルトンをロードするにはどうすればよいのでしょうか。

protected override void OnStart(string[] args)
{
    if (host != null)
    {
        host.Close();
    }

    Type serviceType = typeof(MyService);
    host = new ServiceHost(serviceType);
    host.Open();

    objectConn.getInstance()
}

Windowsサービス起動のOnStartにシングルトンの負荷を追加しようとすると、常に失敗します。これがobjectConnインスタンスのスタートアップルーチンを追加する適切な方法かどうかを尋ねたいと思います。シングルトンの読み込みをMyServiceコンストラクターに配置しようとしましたが、呼び出したWebサービス操作/メソッドへの最初の呼び出しでのみ呼び出され、最初のサービス呼び出しが厄介になります。

DependencyInjectionについて読みましたが、COMオブジェクトソースを一度だけロードしたいので、追加された動作は適用できないと思います。

4

1 に答える 1

1

あなたはおそらくこれを行うことができます - しかし、私は

host.Open()

電話。この呼び出しにより、WCF ランタイム全体とすべてが起動されます。可能であれば、その前にすべての初期化タスクを実行することをお勧めします。

マルク

于 2009-12-07T06:14:36.073 に答える