2012-06-08 63 views
1

我在使用參數創建WCF服務實例時遇到了問題。這種情況出現在服務調用中我無法創建第三方庫COM對象(存在一些線程問題,並且只能在主線程中創建此對象)。因此,我想簡單地維護一個要在服務函數內部創建的對象列表,並讓主線程完成實際的對象創建工作。帶參數的WCF服務實例

但我不清楚我如何可以簡單地將列表傳遞給服務實例的構造函數。就我所知的WCF而言,我認爲服務實例是由框架本身創建的,並且它沒有在構造函數中使用任何參數。那麼將這個列表從主線程傳遞到服務實例的最簡單方法是什麼?謝謝!

回答

2

嘗試玩:

  • 默認的構造
  • 手冊服務主機。繼承:
    • System.ServiceModel.ServiceHost
    • System.ServiceModel.Activation.ServiceHostFactory
  • ServiceBehavior.InstanceContextMode
    • InstanceContextMode.Single
  • 類範圍字段:

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

    將默認的構造函數調用之前,如果你沒有一個默認

1

不要嘗試將它傳遞給服務類的構造函數實例化,或者反正。這可能會造成問題,因爲它會在服務類和COM類之間創建耦合。相反,只需通過靜態列表屬性或類似方式訪問服務方法中的COM對象:

void MyServiceMethod() 
{ 
    List<MyCOMObject> myComObject = MyHelperClass.COMObjectsList //the list is created elsewhere; 
    ... 
} 
+0

謝謝您的建議。這也是一個好習慣 – tete