我需要強制我的WCF服務在單個線程中運行,因爲內部操作取決於不支持多線程調用的傳統COM對象。如何強制WCF服務只使用一個線程?
然後我寫了下面的示例代碼,但如我所料:(
[ServiceContract]
public interface ITestService
{
[OperationContract]
void TestAction();
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single)]
public class TestServiceImp : ITestService
{
void TestAction()
{
Trace.WriteLine("Entering method TestAction, Thread={0}" + Thread.CurrentThread.ManagedThreadId);
//...
Trace.WriteLine("Leaving method TestAction, Thread={0}" + Thread.CurrentThread.ManagedThreadId);
}
}
真正的結果是一樣的東西下面,
進入它不工作方法TestAction,線程= 4
離開方法TestAction,線程= 4
輸入方法TestAction,線程= 5
離開方法TestAction,線程= 5
輸入方法TestAction,線程= 8
離開方法TestAction,線程= 8
雖然我的期望是,
輸入方法TestAction,線程= 4
離開方法TestAction,線程= 4
輸入方法TestAction,線程= 4
離開方法TestAction,線程= 4
進入方法TestAction,Thread = 4
保留方法TestAction,線程= 4
我怎麼能得到我想要的東西?謝謝。
我可以建議這個答案几乎相同的問題:[c# - 強制WCF使用一個線程 - Stack Overflow](http://stackoverflow.com/questions/20000078/force-wcf-to-use-one-線程/ 20010432#comment51204132_20010432) – 2015-07-25 16:11:57