我想寫一個WCF Servce,它將駐留在Windows服務中。此WCF服務將只添加字符串到列表中,然後工作線程將定期處理此列表。達到此目的的最佳方法是什麼?我讀過沖突的例子,這讓我感到困惑。服務和線程共享列表對象的最佳方式是什麼?工作線程的WCF服務?
更新: 感謝您的回覆。只是爲了澄清,我並沒有爲列表的同步或如何使其線程安全而苦苦掙扎。這一切似乎與我在C++中習慣的相同。我正在努力的是在哪裏定義此列表,以便可以從WCF服務和工作線程訪問它。在C++中,我會在全局範圍創建列表,但C#沒有全局範圍。如果我在WCF服務類中定義它,線程就看不到它。如果我在服務類中定義它(線程函數定義和啓動的地方),那麼WCF服務將無法看到它。我確信我前段時間在ATL做了類似的事情,但是這是星期五下午,灰色細胞已經放棄了這一天。
Update2: 我應該在哪裏定義工作線程?在Windows服務類(即主機)中還是在WCF服務中? WCF服務應該是一個具有列表成員和線程功能的單例服務嗎?這解決了訪問問題。在完成了大量的COM之後,我將WCF服務視爲一個COM組件,並在實例被訪問後死去。這導致我想要將靜態列表和線程函數放在Windows服務類中。這仍然感覺它是更自然的地方,但也許我只是沒有以.NET的方式思考。
謝謝。第一部分非常有用。第二部分,我對C++時代的線程同步已經有了很好的理解,因爲它根本就沒什麼不同。我更多問的是如何獲得可供WCF服務對象和工作線程訪問的列表?在C++中,我只是在全局範圍創建列表(並使其像Crtical部分一樣安全),但C#沒有全局範圍的概念。 – Jonnster 2011-05-20 15:00:15
您必須在Windows服務應用程序內託管wcf。它將有一個應用程序範圍。雖然看看一些面向對象的設計模式,讓它變得乾淨而舒適 – Turowicz 2011-05-21 09:21:30
你介意擴展你的最新評論。我無法弄清楚它有一個應用程序範圍。也許我正在看錯誤的例子。 – Jonnster 2011-06-02 16:23:44