1

パラメータを使用して WCF サービス インスタンスを作成する際に問題が発生しています。状況はサービス コール内にあります。サードパーティ ライブラリの COM オブジェクトを作成できません (スレッドの問題があり、このオブジェクトはメイン スレッドでしか作成できません)。その結果、サービス関数内で作成されるオブジェクトのリストを単純に維持し、メイン スレッドに実際のオブジェクト作成作業を行わせたいと考えています。

しかし、リストをサービスインスタンスのコンストラクターに渡す方法がよくわかりません。私が WCF について知っている限りでは、サービス インスタンスはフレームワーク自体によって作成され、コンストラクターでパラメーターを使用しないと思います。では、このリストをメイン スレッドからサービス インスタンスに渡す最も簡単な方法は何でしょうか? ありがとう!

4

2 に答える 2

2

遊んでみてください:

  • デフォルトのコンストラクタ
  • 手動サービスホスト。継承元:
    • System.ServiceModel.ServiceHost
    • System.ServiceModel.Activation.ServiceHostFactory
  • ServiceBehavior.InstanceContextMode
    • InstanceContextMode.Single、など。
  • クラススコープフィールド:

    public class Service : IService
    {
        private AnotherClass _a = new AnotherClass(); // maybe static?
    }
    

    デフォルトのコンストラクター呼び出しの前にインスタンス化されます。デフォルトのコンストラクターがない場合はとにかくインスタンス化されます。

于 2012-06-08T08:21:33.063 に答える
1

それをサービス クラス コンストラクターに渡そうとしないでください。これは、サービス クラスと COM クラスの間の結合を作成するため、問題になる可能性があります。代わりに、静的リスト プロパティなどを介して、サービス メソッド内から COM オブジェクトにアクセスするだけです。

void MyServiceMethod()
{
   List<MyCOMObject> myComObject = MyHelperClass.COMObjectsList //the list is created elsewhere;
   ...
}
于 2012-06-08T08:28:38.770 に答える